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