vue-cli3+typescript初體驗(yàn)小結(jié)
前言
氣勢(shì)洶涌,ts似乎已經(jīng)在來(lái)的路上,隨時(shí)可能敲門(mén)。
2015年,三大前端框架開(kāi)始火爆的時(shí)候,我還在抱著B(niǎo)ackbone不放,一直覺(jué)得可以輕易轉(zhuǎn)到其他框架去。后來(lái)?yè)Q工作,現(xiàn)實(shí)把臉都打腫了,沒(méi)做過(guò)vue、react、angular?不要!
今天,不能犯這個(gè)錯(cuò)了,畢竟時(shí)不我與,都快奔三了。
vue-cli3
vue-cli3的詳細(xì)功能推薦官方文檔,不在本文介紹范圍內(nèi)。
安裝:
npm install -g @vue/cli
檢查安裝成功與否:
vue --version
創(chuàng)建項(xiàng)目:
vue create myapp
可以選擇Manually select feature來(lái)自由選擇功能,常用的有vuex、vue-router、CSS Pre-processors等,我們?cè)侔裻ypescript勾上,就可以回車(chē)進(jìn)入下一步了。PS:勾選的操作是按空格鍵。
創(chuàng)建成功之后,執(zhí)行啟動(dòng)命令:
npm run serve
就可以通過(guò)http://localhost:8080/訪問(wèn)本地項(xiàng)目啦。
typescript
如果沒(méi)有typescript基礎(chǔ),可以先補(bǔ)補(bǔ)課,大概花三十分鐘就可以了解typescript的一些特性,比如:TypeScript 入門(mén)教程。
ts最主要的一點(diǎn)就是類(lèi)型定義,有個(gè)概念才好看得懂demo。
vue-property-decorator
這是一個(gè)涵蓋了vue的一些對(duì)象的集合,我們可以從這里取一些東西出來(lái):
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
取出來(lái)的這幾個(gè)屬性,分別是 組件定義Component,父組件傳遞過(guò)來(lái)的參數(shù)Prop,原始vue對(duì)象Vue,數(shù)據(jù)監(jiān)聽(tīng)對(duì)象Watch。還包括這里沒(méi)有列舉出來(lái)的Model,Emit,Inject,Provide,可以自己嘗試下。
demo
<template>
<div class="hello">
<h1>{{ msg }}--{{ names }}</h1>
<input type="text" v-model="txt">
<p>{{ getTxt }}</p>
<button @click="add">add</button>
<p>{{ sum }}</p>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
@Component
export default class HelloWorld extends Vue {
//props
@Prop() private msg!: string
@Prop() private names!: string
//data
private txt: string = '1'
private sum: number = 0
//computed
get getTxt(){
return this.txt
}
//methods
private add(){
this.sum++
console.log(`sum : ${this.sum}`)
}
//生命周期
created(){
console.log('created')
}
//watch
@Watch('txt')
changeTxt(newTxt: string, oldTxt: string){
console.log(`change txt: ${oldTxt} to ${newTxt}`)
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
margin: 40px 0 0;
}
input {
width: 240px;
height: 32px;
line-height: 32px;
}
</style>
以上就是demo,代碼組織有點(diǎn)散,沒(méi)有原來(lái)js書(shū)寫(xiě)的整齊。
這個(gè)demo沒(méi)有引入組件,如果需要引入組件,應(yīng)該這樣書(shū)寫(xiě):
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js + TypeScript App" names="aaa" />
<HelloWorld2 msg="Welcome to Your Vue.js + TypeScript App" names="bbb" />
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
import HelloWorld from '@/components/HelloWorld.vue'; // @ is an alias to /src
import HelloWorld2 from '@/components/HelloWorld2.vue'; // @ is an alias to /src
@Component({
components: {
HelloWorld,
HelloWorld2,
},
})
export default class Home extends Vue {}
</script>
結(jié)語(yǔ)
如果VSCode編輯器有警告提示,比如:
Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning.
可以把工作區(qū)其他的項(xiàng)目移除,或者把本項(xiàng)目拖動(dòng)到工作區(qū)的首位,或者在把本項(xiàng)目的tsconfig.json復(fù)制到工作區(qū)首位的項(xiàng)目的根目錄下,重啟編輯器,有比較大的概率可以解決警告提示。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue.js實(shí)現(xiàn)雙擊放大預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)雙擊放大預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
Vue實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù)的方法
在Vue框架中,組件間的通信是一個(gè)常見(jiàn)的需求,特別是在子組件需要向父組件傳遞多個(gè)參數(shù)時(shí),合理的通信方式可以顯著提升代碼的可讀性和可維護(hù)性,本文將詳細(xì)介紹如何在Vue中實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù),需要的朋友可以參考下2024-10-10
Vue WatchEffect函數(shù)創(chuàng)建高級(jí)偵聽(tīng)器
watchEffect傳入的函數(shù)會(huì)被立即執(zhí)行一次,并且在執(zhí)行的過(guò)程中會(huì)收集依賴(lài);其次,只有收集的依賴(lài)發(fā)生變化時(shí),watchEffect傳入的函數(shù)才會(huì)再次執(zhí)行2023-03-03
Nuxt頁(yè)面級(jí)緩存的實(shí)現(xiàn)
這篇文章主要介紹了Nuxt頁(yè)面級(jí)緩存的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
vue單頁(yè)緩存存在的問(wèn)題及解決方案(小結(jié))
這篇文章主要介紹了vue單頁(yè)緩存存在的問(wèn)題及解決方案(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
vue-cli構(gòu)建項(xiàng)目使用 less的方法
這篇文章主要介紹了vue-cli構(gòu)建項(xiàng)目使用 less,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
vue實(shí)現(xiàn)拖拽滑動(dòng)分割面板
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽滑動(dòng)分割面板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

