win10 html
node -v 8.9.3vue
vue-cli 3.4node
typescript 3.1.5webpack
編輯器 vscodegit
使用vuecli工具,創建一個項目,使用typescript.並實現基本的路由,組件等功能github
一.建項目web
官網文檔https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-createvue-cli
安裝必要的環境,而後使用管理員身份打開CMD輸入vue ui:typescript
這個是vuecli的圖形化界面,使用它創建比較方便,命令行的命令是vue createnpm
點create開始創建項目,選中帶typescript stylus的那種,而後一路下一步,直到項目建完.
這裏會從node的npm下載不少包,若是網絡很差,會比較慢,還可能失敗.
二.熟悉目錄結構
使用vscode打開這個項目文件夾
看一下,src目錄是源碼,根目錄下有各類配置文件,那個vue.config.js是後來加上去的,原本沒有.
這裏並無發現webpack.config的配置文件,官網上是這樣講的 https://cli.vuejs.org/zh/guide/webpack.html#%E7%AE%80%E5%8D%95%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F
大概是說,vuecli本身生成了webpack配置文件,可能經過增長一個vue.config.js的配置文件來調整webpack的配置,
可使用以下命令查看生成的配置文件 ,在項目根目錄路徑下輸入這個命令,將配置導出到output.js後查看
三.啓動項目
查看package.json的 scripts屬性可知,以下命令啓動項目
npm run serve
這裏看到了經典的vue項目頁
運行前,沒有改動任何配置
四.項目主要文件與目錄
App.vue //
main.ts // 入口文件
router.ts // 路由
store.ts //
/src/views // 能夠是頁面文件
/src/plugins // 插件目錄,例如添加element-ui這個插件後,會增長element.js文件
/src/components // 組件目錄,自定義組件可放此處
五.typescript
因爲使用了typescript,因此跟js的不太同樣,不過在形式上大致一致,
vue js版本中的屬性,成員,生命週期,在ts的類中有一一對應的,基本是一致的.
使用ts要比js麻煩一些,至少要多寫不少類型定義這些強類型語言的東西,可是也有些好處的,至少有語法提示,重構時還能批量修改等等,另外,語法檢查使用了tslint,比較嚴格.
雖然麻煩,但以爲仍是值得的.vscode有創建代碼片斷的功能,能夠建一個vuets的模板,這樣比較省事,點擊文件菜單
文件 ->
使用這個模板,這是個vue文件模板,新建一個vue文件後,輸入vuets回車就自動輸入好了.減小重複勞動
1 "Print to console": { 2 "scope": "vue", 3 "prefix": "vuets", 4 "body": [ 5 "<!-- $1 -->", 6 "<template>", 7 " <div class=\"\"></div>", 8 "</template>", 9 "", 10 "<script lang=ts>", 11 "import { Component, Vue, Prop, Watch } from 'vue-property-decorator';", 12 "@Component", 13 "export default class $2 extends Vue {", 14 "}", 15 "</script>", 16 "<style lang=stylus scoped>", 17 "</style>" 18 ], 19 "description": "Log output to console" 20 }
六.組件調用傳值
如下是一個超鏈接列表組件,接收一個數組,循環router-link,最終獲得a標籤列表
1 <template> 2 <div class="list"> 3 <router-link :to="item.path" v-for="(item,index) in data" :key="index">{{item.title}}</router-link> 4 </div> 5 </template> 6 7 <script lang=ts> 8 import { Component, Vue, Prop, Watch } from 'vue-property-decorator'; 9 @Component 10 export default class extends Vue { 11 @Prop() 12 private data?: []; 13 private created() { 14 window.console.log(this.data); 15 } 16 } 17 </script> 18 <style lang=stylus scoped></style>
與js版本寫法上的不一樣處
這裏有個lang=ts,表示使用typescript
這個組件用來擴展功能,提供裝飾器? https://www.tslang.cn/docs/handbook/decorators.html https://github.com/kaorun343/vue-property-decorator#Prop
有了這個工具後,就可使用ts的方式來寫了.
下面這段代碼定義一個ts類,而且繼承自Vue,在形式上,和js版本的基本一致
從第1個裝飾器 @Component開始,這個的做用就是添加組件,接收一個對象,裏面是組件對象,和js的同樣
import com1
import com2
components:{com1,com2}
@prop()這個就是js中的屬性,下面的成員是屬性名,?號表示爲可空類型
created()這個方法,就是vue生成周期方法了.與js寫法同樣.
--調用這個組件:
1.模板部分與js同樣,寫入模板,而且綁定數據
import list from list.vue // 與js同樣,引入這個組件
// 在組件裝飾器中,註冊這個組件
因爲ts定義屬性必定要賦初值,因此只好定義爲可空類型.
七:總結
建項目,熟悉目錄與文件,作個組件調用的DEMO,竟然也有如此多的坑.
不過好處仍是很大的,新版本的cli不用再去折騰並不熟悉的webpack.這下降了上手難度.
ts與vue的結合已經成熟了,後來應該會愈來愈順手.
後續還須要一個按目錄結構生成路由配置文件的腳本
element-ui和vant兩種ui分別用於PC和移動端的界面,仍是不錯的.但其ts用法,還待研究.