Why?
網上現有的Vue原始碼解析文章一搜一大批,但是為什麼我還要去做這樣的事情呢?因為覺得紙上得來終覺淺,絕知此事要躬行
。
然後平時的專案也主要是Vue,在使用Vue的過程中,也對其一些約定產生了一些疑問,可能官網上只會建議你這麼做,但是核心實現我們可能並不知道。比如:
- v-for key 是如何達到“就地複用”策略
- 陣列更新檢測是如何完成的
- set 為什麼就能動態新增根級別的響應式屬性
- 為什麼Vue可以跨平臺支援weex,以及後來出現的mpvue
- …
其次,很久沒有更新內容了,之前對Vue原始碼也是有點研究,只不過沒有很體系的記錄,現在抽了點時間,做了一次基礎的總結吧。一方面是因為想要克服自己的惰性,另一方面也是想重新溫故一遍。
What?
一共分成了10個基礎部分,後續還會繼續記錄。我們可以先看一下概覽:
然後我們來看一下基礎的目錄:
入口開始,解讀Vue原始碼(二)—— new Vue 的故事
入口開始,解讀Vue原始碼(三)—— initMixin 上篇
入口開始,解讀Vue原始碼(三)—— initMixin 下篇
入口開始,解讀Vue原始碼(四)—— 實現一個基礎的 Vue 雙向繫結
入口開始,解讀Vue原始碼(五)—— $mount 內部實現
入口開始,解讀Vue原始碼(六)—— $mount 內部實現 — compile parse函式生成AST
入口開始,解讀Vue原始碼(七)—— $mount 內部實現 — compile optimize標記節點
入口開始,解讀Vue原始碼(八)—— $mount 內部實現 — compile generate 生成render函式
入口開始,解讀Vue原始碼(九)—— $mount 內部實現 — render函式 –> VNode
入口開始,解讀Vue原始碼(十)—— $mount 內部實現 — patch
End?
文章前後也是利用碎片時間總結整理而成,有些也是翻閱了很多的資料,也有過引用巨人的段落,文章中有所標註。如果沒有標註,可能是本人忘記了,歡迎提醒。文章中如果有筆誤或者不正確的解釋,也歡迎批評指正,共同進步。
最後: