去年我寫了一篇分析Vue原始碼的博文,不知道有多少人看到過:Vue2.1.7原始碼學習
這篇文章是我所寫的博文中被轉載最多的一篇文章,在這篇文章的開頭我提到了這是系列文章中的第一篇,當時的想法是還會有第二篇、第三篇……,但現實是殘酷的(你加班你懂)。不過這似乎並沒有讓我放棄,我可以起的早一點,也可以睡得晚一點。直到現在我寫了約20萬字,依然在持續更新,但我覺得它應該可以和大家見面了,大家久等了。
接下來讓我介紹一下《Vue技術內幕》這套原始碼分析文章的特點,希望讓你感受到我的誠意。
開源共享這套文章採用 署名-非商業性使用-禁止演繹 4.0 國際 許可協議,訪問 :Vue技術內幕
上面的連結拿走不謝,另外我要解釋一下為什麼開源?有很多朋友建議我,讓我去某某平臺利用這些文章賺取收益, 說實話我沒什麼錢,但也不缺什麼錢,沒人會跟錢過不去,但最後我依然沒有選擇那樣做,我對朋友說:vue 沒收大家一分錢,我怎麼能踩著 vue 的肩膀收大家的錢,我可以走捐贈路線啊,如果讀者能真正學到知識、感受到了我的誠意並捐贈給我,這對於我來講就是最讓人滿足的事情。即使這樣我在 Vue技術內幕 | 人之初 這裡還重點提示大家,如果大家真的要捐贈,我希望你們優先捐贈Vue。
超級詳細 – 逐行級別的分析
很自然的,我也是從小白成長起來的,現在終於變成了中白,希望有一天能成為大白。在成長的過程中必然會遇到很多阻力,希望身邊能有個導師一樣的人給我指導,雖然現在明白了一切都要靠自己,但當時的無助還是讓我想幫助更多的人,這就是為什麼這套文章要逐行級別分析的原因,我不希望囫圇吞棗的講個大概,讓讀者既費心力又費時間的研究,當然你可以選擇自己研究,但如果花費了很多時間依然沒有結果,那就看一下這套文章的講解吧。
另外,所謂逐行並非一行接著一行,逐行指的是講解的詳細程度,這套文章將致力於覆蓋所有核心程式碼,畢竟每一句程式碼都有他存在的意義,假如我們不講明白任何一句程式碼的意義,那又怎麼敢說是原始碼分析呢?
實時更新 – 與 Vue 原始碼 dev 分支保持同步
現在有多少文章是過時的?包括我自己寫的那篇,這些文章在寫完的第二天恐怕就已經過時了,因為原始碼的更新是持續的,我不希望花幾個月時間寫出來的東西過時掉,所以每天都會去看Vue的issue、PR等等,一旦有更新我都會把更新的內容同步到文章。
深度分析 – 講解issue
我們知道Vue這個專案自誕生以來一直都在不斷的更新完善,比如新增新的特性,修復已知bug等等。而在這個過程中原始碼也將越來越完善,這也意味著曾經的程式碼是不完善的,本套文章在分析原始碼時除了告訴你這段程式碼為什麼這麼寫之外,還會根據相關issue分析這段程式碼之前是怎麼寫的以及存在的問題。
以上就是這套文章的主要幾點,除此之外再討論一下關於閱讀原始碼的問題,有的同學會質疑:閱讀原始碼是否真的有意義。對於這個問題我的回答是:如果你覺得讀書有意義,那麼看原始碼就有意義。因為原始碼是更加精華的書。
有的同學可能會有疑問,比如:你又不是作者本人,你的分析靠譜嗎、Vue.js又不是你寫的,誰知道你分析的對不對 等等。
對於第一個問題我想說的是,你們的懷疑是對的,畢竟最有權威分析 Vue 原始碼的人必然是作者自己,但同學們要知道作者(@尤雨溪)才沒有時間來給大家寫一套原始碼分析的文章。對於第二個問題,Vue 確實不是我寫的,但為了證明這套文章還是稍微有點質量的,在這裡我把看原始碼過程中提過的一些 PR 貼在下面,也說明我多少對 Vue 有那麼一點兒粗淺的理解:
github.com/vuejs/vue/p…github.com/vuejs/vue/p…github.com/vuejs/vue/p…github.com/vuejs/vue/p…github.com/vuejs/vue/p…github.com/vuejs/vue/p…github.com/vuejs/vue/p…
說實話,上面的PR至少在我看來都是些微不足道的,因為寫文章需要大量的時間,隨著這些文章的完成,我很希望抽出時間做一些實質性的貢獻。
最後給大家一些忠告,如果你真的想讀原始碼,那麼建議您別偷懶,在看這套文章時,一定要手裡握著原始碼對照著看。既然是閱讀原始碼,沒有原始碼怎麼讀?所以你要使用你喜歡的方式拿到原始碼才行,最簡單的方式是,clone 一份原始碼到你的本地。如果你不想這麼做,你可以安裝一個chrome的擴充套件程式,使得你能夠以線上以資源管理器的方式閱讀GitHub倉庫的程式碼,我常用的chrome擴充套件是:octotree,類似的擴充套件還有很多,你喜歡就好。