Vue.js 源码目录设计(二)
Vue.js 的源碼都在 src 目錄下,其目錄結(jié)構(gòu)如下。
src
├── compiler # 編譯相關(guān)
├── core # 核心代碼
├── platforms # 不同平臺的支持
├── server # 服務(wù)端渲染
├── sfc # .vue 文件解析
├── shared # 共享代碼
compiler
compiler 目錄包含 Vue.js 所有編譯相關(guān)的代碼。它包括把模板解析成 ast 語法樹,ast 語法樹優(yōu)化,代碼生成等功能。
編譯的工作可以在構(gòu)建時做(借助 webpack、vue-loader 等輔助插件);也可以在運行時做,使用包含構(gòu)建功能的 Vue.js。顯然,編譯是一項耗性能的工作,所以更推薦前者——離線編譯。
core
core 目錄包含了 Vue.js 的核心代碼,包括內(nèi)置組件、全局 API 封裝,Vue 實例化、觀察者、虛擬 DOM、工具函數(shù)等等。
這里的代碼可謂是 Vue.js 的靈魂,也是我們之后需要重點分析的地方。
platform
Vue.js 是一個跨平臺的 MVVM 框架,它可以跑在 web 上,也可以配合 weex 跑在 native 客戶端上。platform 是 Vue.js 的入口,2 個目錄代表 2 個主要入口,分別打包成運行在 web 上和 weex 上的 Vue.js。
我們會重點分析 web 入口打包后的 Vue.js,對于 weex 入口打包的 Vue.js,感興趣的同學可以自行研究。
server
Vue.js 2.0 支持了服務(wù)端渲染,所有服務(wù)端渲染相關(guān)的邏輯都在這個目錄下。注意:這部分代碼是跑在服務(wù)端的 Node.js,不要和跑在瀏覽器端的 Vue.js 混為一談。
服務(wù)端渲染主要的工作是把組件渲染為服務(wù)器端的 HTML 字符串,將它們直接發(fā)送到瀏覽器,最后將靜態(tài)標記"混合"為客戶端上完全交互的應(yīng)用程序。
sfc
通常我們開發(fā) Vue.js 都會借助 webpack 構(gòu)建, 然后通過 .vue 單文件來編寫組件。
這個目錄下的代碼邏輯會把 .vue 文件內(nèi)容解析成一個 JavaScript 的對象。
shared
Vue.js 會定義一些工具方法,這里定義的工具方法都是會被瀏覽器端的 Vue.js 和服務(wù)端的 Vue.js 所共享的。
總結(jié)
從 Vue.js 的目錄設(shè)計可以看到,作者把功能模塊拆分的非常清楚,相關(guān)的邏輯放在一個獨立的目錄下維護,并且把復用的代碼也抽成一個獨立目錄。
這樣的目錄設(shè)計讓代碼的閱讀性和可維護性都變強,是非常值得學習和推敲的。
?
-----------------轉(zhuǎn)自慕課網(wǎng)vue源碼解析視頻教程的內(nèi)容-----------------
轉(zhuǎn)載于:https://www.cnblogs.com/bobo1/p/10830453.html
總結(jié)
以上是生活随笔為你收集整理的Vue.js 源码目录设计(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。