Vue.js 的源碼都在 src ?錄下场晶,其?錄結(jié)構(gòu)如下。
src
├── compiler # 編譯相關(guān)
├── core # 核?代碼
├── platforms # 不同平臺(tái)的?持
├── server # 服務(wù)端渲染
├── sfc # .vue ?件解析
├── shared # 共享代碼
compiler
compiler ?錄包含 Vue.js 所有編譯相關(guān)的代碼框沟。它包括把模板解析成 ast 語(yǔ)法樹(shù)诚欠,ast 語(yǔ)法樹(shù)優(yōu)化瓦糕,代碼 ?成等功能。
編譯的?作可以在構(gòu)建時(shí)做(借助 webpack涩澡、vue-loader 等輔助插件);也可以在運(yùn)?時(shí)做院促,使?包含 構(gòu)建功能的 Vue.js筏养。顯然斧抱,編譯是?項(xiàng)耗性能的?作,所以更推薦前者——離線編譯渐溶。
core
core ?錄包含了 Vue.js 的核?代碼辉浦,包括內(nèi)置組件、全局 API 封裝茎辐,Vue 實(shí)例化宪郊、觀察者、虛擬 DOM拖陆、?具函數(shù)等等弛槐。
platform
Vue.js 是?個(gè)跨平臺(tái)的 MVVM 框架,它可以跑在 web 上依啰,也可以配合 weex 跑在 natvie 客戶端上乎串。 platform 是 Vue.js 的??,2 個(gè)?錄代表 2 個(gè)主要??速警,分別打包成運(yùn)?在 web 上和 weex 上的 Vue.js叹誉。
server
Vue.js 2.0 ?持了服務(wù)端渲染,所有服務(wù)端渲染相關(guān)的邏輯都在這個(gè)?錄下闷旧。注意:這部分代碼是跑在 服務(wù)端的 Node.js长豁,不要和跑在瀏覽器端的 Vue.js 混為?談。
服務(wù)端渲染主要的?作是把組件渲染為服務(wù)器端的 HTML 字符串忙灼,將它們直接發(fā)送到瀏覽器匠襟,最后將 靜態(tài)標(biāo)記"混合"為客戶端上完全交互的應(yīng)?程序。
sfc
通常我們開(kāi)發(fā) Vue.js 都會(huì)借助 webpack 構(gòu)建该园, 然后通過(guò) .vue 單?件的編寫組件酸舍。 這個(gè)?錄下的代碼邏輯會(huì)把 .vue ?件內(nèi)容解析成?個(gè) JavaScript 的對(duì)象。
shared
Vue.js 會(huì)定義?些?具?法爬范,這?定義的?具?法都是會(huì)被瀏覽器端的 Vue.js 和服務(wù)端的 Vue.js 所共享 的父腕。