Vue的靈活性老是讓代碼看起來很是洗練,對TypeScript來講也是一種挑戰, 好在Vue對TypeScript進行了一次全方位的適配。html
相對於React嚴謹的代碼,Redux囉嗦的樣板代碼,Vue就顯得很是靈活。Vue採用雙向綁定原理,以下圖所示vue
雙向綁定的好處是這樣的,在數據發生變化的時候,會發佈一個叫「model-update」的事件,相似,當視圖發生變化的時候,會發佈一個叫「ui-update」的事件,Vue自動訂閱了這些事件,並能自動處理好,咱們無需關心究竟是數據變化了仍是UI變化了,Vue都能本身處理好。尤爲是在繪製長的Form表單時,只須要將變量綁定在輸入的模塊上,不管是用戶輸入仍是經過代碼手動賦值,模塊都會自動變化,不須要再去關心每一個輸入的細節。web
雖然Vue很棒,但對TypeScript的支持並非那麼完美,還有一些細節須要咱們去作。typescript
⒈安裝Vue腳手架npm
npm install -g @vue/cli # OR yarn global add @vue/cli
⒉初始化項目架構
vue create ts-vue
Vue的組件和React很是不一樣app
Vue的代碼是這樣的:ide
<template> <div id="app"> <img alt="Vue logo" src="./assets/logo.png"> <HelloWorld msg="Welcome to Your Vue.js App"/> </div> </template> <script> import HelloWorld from './components/HelloWorld.vue' export default { name: 'app', components: { HelloWorld } } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
咱們能夠清晰看到style、script以及html都在一個Vue組件裏,支持TypeScript也只是讓script標籤能兼容TypeScript語法,與Node及React開發中直接修改整個文件名是大相徑庭的。工具
同時你會發現,Vue的腳手架作的很是簡單易懂,項目結構已經徹底給你部署好了。ui
⒊集成TypeScript
https://cn.vuejs.org/v2/guide/typescript.html
*vue-class-component是Vue官方維護的一個庫,可讓咱們在Vue裏面按照類的形式寫代碼
*若是但願在Vue裏使用props或者watch,推薦安裝vue-property-decorator
*若是你想在Vue中使用單向數據流的Redux,這也是容許的,官方推薦的工具是Vuex。Redux的架構由State、Reducer以及Action構成的,如圖所示:
*但Vuex的概念略有不一樣,以下圖所示:
Mutation至關於Reducer,用getter對State的查詢進行了封裝,使其有一個充滿含義的名字:
const store = new Vuex.Store({ state:{ todos:[ {id:1.text:'...',done:true}, {id:2.text:'...',done:false}, ] }, getters:{ doneTodos: state => { return state.todos.filter(todo => todo.done) } } })