Vue.js 源碼目錄設(shè)計

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 跑在 natvie 客戶端上。platform 是 Vue.js 的入口燎竖,2 個目錄代表 2 個主要入口璃弄,分別打包成運行在 web 上和 weex 上的 Vue.js。
我們會重點分析 web 入口打包后的 Vue.js构回,對于 weex 入口打包的 Vue.js夏块,感興趣的同學(xué)可以自行研究。
server
Vue.js 2.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)容解析成一個 JavaScript 的對象果港。
shared
Vue.js 會定義一些工具方法沦泌,這里定義的工具方法都是會被瀏覽器端的 Vue.js 和服務(wù)端的 Vue.js 所共享的。
總結(jié)
從 Vue.js 的目錄設(shè)計可以看到辛掠,作者把功能模塊拆分的非常清楚谢谦,相關(guān)的邏輯放在一個獨立的目錄下維護,并且把復(fù)用的代碼也抽成一個獨立目錄萝衩。
這樣的目錄設(shè)計讓代碼的閱讀性和可維護性都變強回挽,是非常值得學(xué)習(xí)和推敲的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猩谊,一起剝皮案震驚了整個濱河市厅各,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌预柒,老刑警劉巖队塘,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袁梗,死亡現(xiàn)場離奇詭異,居然都是意外死亡憔古,警方通過查閱死者的電腦和手機遮怜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸿市,“玉大人锯梁,你說我怎么就攤上這事⊙媲椋” “怎么了陌凳?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長内舟。 經(jīng)常有香客問我合敦,道長,這世上最難降的妖魔是什么验游? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任充岛,我火速辦了婚禮,結(jié)果婚禮上耕蝉,老公的妹妹穿的比我還像新娘崔梗。我一直安慰自己,他們只是感情好垒在,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布蒜魄。 她就那樣靜靜地躺著,像睡著了一般场躯。 火紅的嫁衣襯著肌膚如雪权悟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天推盛,我揣著相機與錄音峦阁,去河邊找鬼。 笑死耘成,一個胖子當(dāng)著我的面吹牛榔昔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘪菌,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼撒会,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了师妙?” 一聲冷哼從身側(cè)響起诵肛,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎默穴,沒想到半個月后怔檩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褪秀,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年薛训,在試婚紗的時候發(fā)現(xiàn)自己被綠了媒吗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡乙埃,死狀恐怖闸英,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情介袜,我是刑警寧澤甫何,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站遇伞,受9級特大地震影響辙喂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赃额,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叫确。 院中可真熱鬧跳芳,春花似錦、人聲如沸竹勉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次乓。三九已至吓歇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間票腰,已是汗流浹背城看。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杏慰,地道東北人测柠。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像缘滥,于是被迫代替她去往敵國和親轰胁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容