compiler
包含vue.js所有編譯相關(guān)代碼。包括把模版解析成ast樹叠穆,ast語法樹優(yōu)化,代碼生成等工具臼膏。
編譯的工作可以在構(gòu)建時候做硼被,(借助webpack、vue-loader等輔助插件)渗磅;也可以在運(yùn)行時候做嚷硫,使用包含構(gòu)建工具的vue.js。顯然始鱼,編譯是一種耗性能的工作仔掸,所以更推薦前者——離線編譯。
core
core目錄包含了vue.js的核心代碼医清,包括內(nèi)置組建起暮,全局API封裝,Vue實(shí)例化会烙,觀察者负懦,虛擬DOM,工具函數(shù)等等柏腻。
這個的代碼是vue.js的靈魂纸厉,是我們著重分析的地方。
platform
vue.js是一個跨平臺的MVVM框架五嫂,它可以跑在web上颗品,也可以配合weex跑在native客戶端上。platform是vue.js的入口贫导,2個目錄代表2個主要入口抛猫,分別打包成運(yùn)行在web上和weex上的Vue.js。
我們會著重分析web入口打包后的Vue.js孩灯,對于weex入口打包的vue.js感興趣的同學(xué)闺金,可以自行研究。
server
Vue.js2.0支持了服務(wù)端渲染峰档,所有服務(wù)端渲染相關(guān)的邏輯都在這個目錄下败匹。注意:這部分代碼是跑在服務(wù)端的Node.js寨昙,不要和跑在瀏覽器端的Vue.js混為一談。
服務(wù)端渲染主要工作是把組件渲染為服務(wù)器端的HTML字符串掀亩,將它們直接發(fā)送到瀏覽器舔哪,最后將靜態(tài)標(biāo)記“混合”為客戶端上完全交互的應(yīng)用程序。
sfc
通常我們開發(fā)Vue.js都會借助webpack構(gòu)建槽棍,然后通過.vue單文件的編寫組件捉蚤。
這個目錄下的代碼邏輯會把.vue文件內(nèi)容解析成一個JS對象。
share
Vue.js會定義一些工具方法炼七,這里定義的工具方法都是會被瀏覽器端的Vue.js和服務(wù)端的Vue.js所共享的缆巧。
總結(jié)
從vue.js的目錄設(shè)計(jì)可以看到,作者把功能模塊拆分的非常清楚豌拙,相關(guān)邏輯放在一個獨(dú)立的目錄下維護(hù)陕悬,并把復(fù)用的代碼也抽象成一個獨(dú)立目錄。
這樣的目錄設(shè)計(jì)讓代碼的閱讀性和可維護(hù)性都變強(qiáng)按傅,是非常值得學(xué)習(xí)和推敲的捉超。