vue-cli3+typescript初體驗(yàn)小結(jié)
前言
氣勢(shì)洶涌,ts似乎已經(jīng)在來的路上,隨時(shí)可能敲門。
2015年,三大前端框架開始火爆的時(shí)候,我還在抱著Backbone不放,一直覺得可以輕易轉(zhuǎn)到其他框架去。后來換工作,現(xiàn)實(shí)把臉都打腫了,沒做過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來自由選擇功能,常用的有vuex、vue-router、CSS Pre-processors等,我們?cè)侔裻ypescript勾上,就可以回車進(jìn)入下一步了。PS:勾選的操作是按空格鍵。
創(chuàng)建成功之后,執(zhí)行啟動(dòng)命令:
npm run serve
就可以通過http://localhost:8080/訪問本地項(xiàng)目啦。
typescript
如果沒有typescript基礎(chǔ),可以先補(bǔ)補(bǔ)課,大概花三十分鐘就可以了解typescript的一些特性,比如:TypeScript 入門教程。
ts最主要的一點(diǎn)就是類型定義,有個(gè)概念才好看得懂demo。
vue-property-decorator
這是一個(gè)涵蓋了vue的一些對(duì)象的集合,我們可以從這里取一些東西出來:
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
取出來的這幾個(gè)屬性,分別是 組件定義Component,父組件傳遞過來的參數(shù)Prop,原始vue對(duì)象Vue,數(shù)據(jù)監(jiān)聽對(duì)象Watch。還包括這里沒有列舉出來的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)散,沒有原來js書寫的整齊。
這個(gè)demo沒有引入組件,如果需要引入組件,應(yīng)該這樣書寫:
<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é)語
如果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è)常見的需求,特別是在子組件需要向父組件傳遞多個(gè)參數(shù)時(shí),合理的通信方式可以顯著提升代碼的可讀性和可維護(hù)性,本文將詳細(xì)介紹如何在Vue中實(shí)現(xiàn)子組件向父組件傳遞多個(gè)參數(shù),需要的朋友可以參考下2024-10-10
Vue WatchEffect函數(shù)創(chuàng)建高級(jí)偵聽器
watchEffect傳入的函數(shù)會(huì)被立即執(zhí)行一次,并且在執(zhí)行的過程中會(huì)收集依賴;其次,只有收集的依賴發(fā)生變化時(shí),watchEffect傳入的函數(shù)才會(huì)再次執(zhí)行2023-03-03
vue-cli構(gòu)建項(xiàng)目使用 less的方法
這篇文章主要介紹了vue-cli構(gòu)建項(xiàng)目使用 less,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
vue實(shí)現(xiàn)拖拽滑動(dòng)分割面板
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽滑動(dòng)分割面板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

