日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue-property-decorator vue typescript写法

發(fā)布時間:2025/3/20 vue 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue-property-decorator vue typescript写法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是Typescript

TypeScript 是一種由微軟開發(fā)的自由和開源的編程語言,它是 JavaScript 的一個超集,擴(kuò)展了 JavaScript 的語法。作者是安德斯大爺, Delphi、C# 之父(你大爺永遠(yuǎn)是你大爺)。把弱類型語言改成了強(qiáng)類型語言,擁有了靜態(tài)類型安全檢查, IDE 智能提示和追蹤,代碼重構(gòu)簡單、可讀性強(qiáng)等特點(diǎn)。
現(xiàn)在VUE 也支持了 TypeScript ,面對安德斯大爺放出的這些大招,果斷用之。

安裝使用

使用 vue-cli 創(chuàng)建項(xiàng)目的時候 選擇Typescript就行了,
注意下幾個配置文件

tsconfig.json

{"compilerOptions": {"target": "esnext","module": "esnext","strict": true,"jsx": "preserve","importHelpers": true,"moduleResolution": "node","experimentalDecorators": true,"esModuleInterop": true,"allowSyntheticDefaultImports": true,"sourceMap": true,"baseUrl": ".","types": ["webpack-env"],"paths": {"@/*": ["src/*"]},"lib": ["esnext","dom","dom.iterable","scripthost"]},"include": ["src/**/*.ts","src/**/*.tsx","src/**/*.vue","tests/**/*.ts","tests/**/*.tsx"],"exclude": ["node_modules"] }

tslint.json

{"defaultSeverity": "warning","extends": ["tslint:recommended"],"linterOptions": {"exclude": ["node_modules/**"]},"rules": {"quotemark": [true, "single"],"indent": [true, "spaces", 2],"interface-name": false,"ordered-imports": false,"object-literal-sort-keys": false,"no-consecutive-blank-lines": false,"no-console": false, //允許使用console"member-access": [true, "no-public"], //禁止指定公共可訪問性,因?yàn)檫@是默認(rèn)值// "noImplicitAny": false, //允許參數(shù)而不聲明其類型"one-variable-per-declaration": false, //允許在同一聲明語句中使用多個變量定義"no-unused-expression": [true, "allow-fast-null-checks"], //允許使用邏輯運(yùn)算符執(zhí)行快速空檢查并執(zhí)行副作用的方法或函數(shù)調(diào)用( 例如e && e.preventDefault())"curly": [true, "ignore-same-line"],"arrow-parens": [true, "ban-single-arg-parens"],"semicolon": [true, "never"],//是否提示不必要的分號"trailing-comma": [true,{"multiline": {"objects": "ignore","arrays": "ignore","functions": "ignore","typeLiterals": "ignore"},"esSpecCompliant": true}]} }

重要的是怎么在項(xiàng)目中使用Typescrit寫法

1:安裝npm install --save vue-property-decorator
此類庫提供了7個裝飾器

  • @Emit
  • @Inject
  • @Model
  • @Prop
  • @Provide
  • @Watch
  • @Component
    實(shí)現(xiàn)生成像原生 JavaScript class 那樣的聲明組件。

下面分別給出實(shí)例解釋其用法:

  • @Component
    組件聲明
    原生寫法
import UploadImage from '@/components/UploadImage'export default {name: 'user',components: { UploadImage },data() {return {name:"張三",sex: '男'}},methods: {funcA(params) {},funcB() {}} }

使用Ts中寫法

import UploadImage from '@/components/UploadImage' import { Component, Vue, Provide } from 'vue-property-decorator'@Component(name:"user",components:{UploadImage}) export default class user extends Vue{private name:string="張三"private sex:string="男"private funcA(params:any){}private funcB(){} }

其中使用 @Component 聲明了 user組件 ,同時引用 子組件 UploadImage,寫在 Components 參數(shù)中。

  • @Prop
    屬性聲明 在自定義組建中使用
    原生寫法
export default{name:"upload",props:{value:{type:String,default:''}} }

在ts中寫法

@Component() export default class upload extends Vue{@Prop()private value:string=''; }
  • computed
    計(jì)算屬性
    這個很類似于c#中的 屬性概念,屬性值本身可以通過計(jì)算得出。

原生寫法

computed: {imageUrl() {return 'http://xxxx.xxxx.com/' + this.value;//value是定義的一個字段}},

在ts中寫法

get imageUrl(){return 'http://xxxx.xxxx.com/' + this.value;//value是定義的一個字段 }template 中一樣使用{{imageUrl}}
  • @watch
    用來監(jiān)測Vue實(shí)例上的數(shù)據(jù)變動
    如果對應(yīng)一個對象,鍵是觀察表達(dá)式,值是對應(yīng)回調(diào),值也可以是方法名,或者是對象,包含選項(xiàng)。
export default {name: 'index',data() {return {demo: {name: ''},value: ''};},computed: {newName() {return this.demo.name;}},watch: {newName(val) {this.value = val;}}};

ts寫法

export default class index extends Vue{demo:any={name:''};value:string='';get newName(){ return this.demo.name;}@watch('wnewName')wnewName(val){this.value=val;} }
  • emit
    我們知道,父組件是使用 props 傳遞數(shù)據(jù)給子組件,但如果子組件要把數(shù)據(jù)傳遞回去,應(yīng)該怎樣做?那就是自定義事件!

每個 Vue 實(shí)例都實(shí)現(xiàn)了事件接口(Events interface),即:

- 使用 $on(eventName) 監(jiān)聽事件 - 使用 $emit(eventName)觸發(fā)事件 Vue.component('counter', {template: `<button v-on:click="increment">{{ counter }}</button>`,data() {return {counter: 0}},methods: {increment: function () {this.counter += 1this.$emit('increment')}}, });new Vue({el: '#example',data: {total: 0},methods: {incrementTotal: function () {this.total += 1}} })<div id="example"><p>{{ total }}</p><counter v-on:increment="incrementTotal"></counter> </div>

子組件自定義了個事件,然后把這個事件發(fā)射出去,父組件使用這個事件

轉(zhuǎn)載于:https://www.cnblogs.com/sands/p/11284596.html

總結(jié)

以上是生活随笔為你收集整理的vue-property-decorator vue typescript写法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩激情视频在线 | 毛片88| 999久久久精品| 天天草av| 精品黄色av | 五月天婷婷社区 | 成人黄色在线免费观看 | 亚洲欧洲色 | 波多野结衣一区二区三区在线观看 | 我的公把我弄高潮了视频 | 午夜影院美女 | 一级全黄男女免费大片 | 高跟鞋调教—视频|vk | 亚洲不卡中文字幕无码 | 97香蕉碰碰人妻国产欧美 | 久草视频这里只有精品 | 精品肉丝脚一区二区三区 | 成年免费视频黄网站在线观看 | 强睡邻居人妻中文字幕 | 欧美福利精品 | 黄色片网站在线播放 | 69久久夜色精品国产69 | 国产精品一区二区无码对白 | 国产成人啪免费观看软件 | av永久免费网站 | 亚洲国产成人综合 | 麻豆va| 欧美私人情侣网站 | 日韩av网址在线观看 | 日韩精选在线观看 | 蜜桃av乱码一区二区三区 | 热久久久久 | 亚洲另类色图 | 人体av| 毛片的网站 | 爱操在线 | 99在线视频精品 | 欧美午夜精品一区二区三区电影 | www.婷婷.com | 国产在线自 | 国产一区二区免费视频 | 色999日韩 | 丝袜ol美脚秘书在线播放 | 杨贵妃颤抖双乳呻吟求欢小说 | 免费看黄色的网址 | 插插宗合网 | 久久成人a毛片免费观看网站 | 欧美一区亚洲一区 | 欧美三级小视频 | 女人喷潮完整视频 | 中文无码av一区二区三区 | 国模无码大尺度一区二区三区 | 日日舔夜夜操 | 91视| 国产乱码精品一品二品 | 色啦啦视频 | 蜜桃视频一区二区三区 | 在线观看免费视频a | 亚洲国产精品va在线看黑人 | 欧美色人阁 | 诱惑av | 亚洲免费在线观看av | 99久久伊人 | 日本久久中文字幕 | 骚婷婷 | 久久久久伊人 | 九九在线精品 | 国产老熟女伦老熟妇露脸 | 台湾swag在线观看 | 爱爱视频欧美 | 国产一级片一区 | 成人综合网站 | av一道本| 亚洲精品字幕在线观看 | 久久人人爽 | 在线a视频 | 日本免费一二三区 | 亚洲色图狠狠干 | 亚洲av无码片一区二区三区 | 欧美区一区二 | jizz在线播放 | 无码人妻精品一区二 | 欧美性猛交久久久乱大交小说 | 辟里啪啦国语版免费观看 | 成人在线91| 成人性生交大片 | 校园春色亚洲激情 | 国产亚洲精品成人无码精品网站 | 亚洲天堂网在线观看 | av激情在线 | 成年人午夜 | 日韩大胆人体 | 亚洲av无码成人精品区 | 亚洲一区二区三区日韩 | 亚洲国产精品成人综合久久久 | 欧美特级特黄aaaaaa在线看 | 女生扒开腿让男生操 | 国产老肥熟 | 久久精品片 |