Vue 的漸進式設計使得它非常容易上手,在最簡單的情況下,我們只需要引入 Vue 的 JS 文件,然后 new Vue() 即可使用聲明式渲染。
Vue 的文檔編寫也比較優秀,方便使用者一步一步深入了解 Vue 各個特性的使用。既然如此,為什么我們還需要閱讀 Vue 的源碼呢,直接看文檔學習它的使用不就可以解決問題了嗎?
這個問題可以從兩方面來解答。
他山之石 可以攻玉
前端技術的發展非常快,各種類庫、框架、解決方案一直層出不窮。即便像 Vue 如今如日中天,其火起來的時間也不過短短三五年。而時間往回推幾年,流行的卻是 jQuery、backbone.js 之類的方案。因此,Vue.js 也有可能過時,僅僅掌握 Vue 的使用是遠遠無法跟上前端的發展腳步的。
Vue 的源碼中有不少經典的解決問題的方法,掌握這些才算是真的學到了一些前端精髓。即便以后 Vue 不再流行,這些學習到的方法也是不會過時的。例如時下流行的 JSX、虛擬 DOM、數據變更的監聽檢測、觀察者模式的使用等,都是非常有學習價值的問題解決方案。
此外,Vue 作為一個通用框架,固然能幫助我們解決很大一部分的問題,但是當應用復雜度上升以后,僅僅依靠 Vue 沒有辦法完全解決項目中碰到的問題。因此在碰到復雜的項目場景時,仍然需要大量的前端基礎知識技能,而 Vue 的源碼中有很多問題的解決方案,如果熟練掌握這些方案,將會使我們事半功倍。
知已知彼 百戰不殆
在大部分情況下,我們僅僅需要根據 Vue 的官方文檔來使用,就足以解決項目中的問題。但是在項目場景復雜時,仍然可能碰到一些文檔沒有覆蓋的問題。此時我們可能需要先了解 Vue 底層的實現方案(如 nextTick、render 等),然后分析出最合適的解決辦法。
另一種情況是當我們將一些解決方案應用到 Vue 不能覆蓋的部分時,如果不能深入了解 Vue 的底層實現機制,就很難避免一些底層機制的沖突。此時只有我們深入了解 Vue 的源碼,才能對這些解決方案做出客觀的評價,以決定是否應該應用到項目中。
其他原因
除此之外,僅僅從價值的角度來說,也有越來越多的公司在招聘的時候會要求掌握一些框架的實現原理,除了上述說的學習和應用的原因外,是否能掌握一些在用的框架的原理,也可以視作學習態度的一個體現。
綜上,作為一個合格的 web 前端工程師,對 Vue 的源碼做一定深度的學習是十分必要的。