【Vue】關(guān)于為什么我推薦大家看vue代碼的隨想
很贊同【越好的框架越不需要使用者特地去讀】這個理念,畢竟我們研讀源碼就是為了解決具體問題,按需去看比較好,不過這個前提是你已經(jīng)是一個系統(tǒng)化訓(xùn)練的工程師,如果是針對新手,尤其是前端這個特殊的領(lǐng)域,大部分同學(xué)都不是計算機出身 ,現(xiàn)在我建議去看vue3的源碼 并不是其他的不好,而是Vue3很適合用來幫助初中級前端走完升級的路線,通過vue3源碼中的細節(jié),構(gòu)建和豐富自己的前端知識體系
vue3大部分代碼是小右寫的,平均代碼質(zhì)量比較高,React也很贊,但是整體工程化過于復(fù)雜,不太適合新手,建議搞定vue之后去看React更好一些 源碼閱讀本身也是一個需要練習(xí)的技能,一次訓(xùn)練,持久收益 先忽略ts,去看@vue/reactivity,這是個獨立的包,1000左右,難度適中,測試覆蓋率100%(到100%的測試case還是我提的 嘿嘿),非常適合作為第一個閱讀的源碼 還能鞏固ES6+的幾個新數(shù)據(jù)解構(gòu)和語法 之前我推薦1000左右的代碼還是seajs 研究文件解構(gòu),學(xué)習(xí)一下工程化體系 lerna管理 script下面的文件,研究commit規(guī)范,git hook,dev build等配置 研究runtime-core和dom,了解vue整個框架設(shè)計的理念 事件修飾符once的實現(xiàn),并不需要add再removeListener,而是addEventListener的時候加一個第三個參數(shù),{once:true}的配置就可以 insertBefore第二個參數(shù)給null的話,和appendChild效果一樣 等等等等, 會讓自己恍然大哦一下的小tips 細節(jié)不多說,比如dom diff里面的getSequence生成最長遞增子序列,會讓你嘗試去研究算法是個啥,然后研究vue3的貪心+二分實現(xiàn)的時候,還會了解動態(tài)規(guī)劃的實現(xiàn),算法能力++,至少意識到需要學(xué)算法,這也是前端老鐵的軟肋質(zhì)疑 有些vue的實現(xiàn)讓你了解js和dom里一些容易忽略的細節(jié) shapeFlag和patchFlag還會讓你意識到位運算也需要學(xué)學(xué) typescript不用多說,看見不懂的語法,按需學(xué)一學(xué)也不錯 看完就可以搞一本算法第四版之類的,好好學(xué)一下算法,有時候知道自己需要學(xué)也挺重要 compiler了解vue編譯的優(yōu)化 讓你知道原來還有個編譯原理的東東需要學(xué)習(xí) 先去看the-super-tiny-compiler這200行代碼, 了解一下parser,ast,codeGenerator等是啥意思 看完compiler dom和core ,既能應(yīng)付面試,還大概入門了編譯原理 其他的很多實現(xiàn)也挺有意思,而且大部分代碼都配有測試 slot v-model keep-alive 其他包比如sfc,test選看,按需看就行 其他的vuex,vite,router啥的也是類似
綜上所述,看完vue生態(tài)代碼其實是對前端這個特殊行業(yè)的新手工程師,可以起到幫助鞏固計算機基礎(chǔ)的重要性。
有時候不是我們不勤奮,而是沒有科班的訓(xùn)練,我們不知道這些東西學(xué)的意義是啥,閱讀框架源碼的意義也在于此
當然完整系統(tǒng)的看完一個后,閱讀源碼這個技能你也掌握了,針對其他框架就可以按需閱讀,也就找到了自己高效學(xué)習(xí)的路線
ps:我vue3源碼也是粗略看過,如果有說的不對的地方,以vue最新的源碼為準
歡迎閱讀原文去知乎討論



評論
圖片
表情
