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