閱讀Vue.js源代碼的準(zhǔn)備

在閱讀源代碼之前,我們需要先了解Vue最基礎(chǔ)的用法,官網(wǎng)示例如下:

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
  var app = new Vue({
    el: '#app',
    data: {
      message: 'Hello Vue!'
    }
  })
</script>

無(wú)論我們的項(xiàng)目如何設(shè)計(jì),Vue都是從new一個(gè)Vue的實(shí)例開(kāi)始的,閱讀源代碼的一個(gè)起點(diǎn)就在這,為什么說(shuō)是一個(gè)起點(diǎn)呢,因?yàn)檫@里有一個(gè)很容易混淆的概念:實(shí)例,我們這里用Vue大寫(xiě)字母開(kāi)頭的表示Vue.js的類、用vue小寫(xiě)字母開(kāi)頭的表示類實(shí)例


  • js中單純的類是沒(méi)有Vue所需的大量功能的,而賦予Vue能力的這個(gè)行為叫提供Vue.js的Runtime,也就是瀏覽器讀取Vue.js的編譯產(chǎn)物時(shí)執(zhí)行的對(duì)Vue的定義操作,這個(gè)操作的實(shí)現(xiàn)在src/core/instance/index.ts
  • 實(shí)例
    創(chuàng)建Vue的實(shí)例vue,實(shí)際是執(zhí)行了Vue的構(gòu)造函數(shù),所以這里執(zhí)行的是src/core/instance/init.ts_init函數(shù)

當(dāng)然,單純的用類和實(shí)例劃分是不對(duì)的,但因?yàn)閖s是一門(mén)動(dòng)態(tài)語(yǔ)言,各種概念混雜邊限模糊、而Vue.js項(xiàng)目現(xiàn)代化的項(xiàng)目架構(gòu)又和瀏覽器的運(yùn)行環(huán)境八桿子打不著,讓很多經(jīng)驗(yàn)不夠豐富的開(kāi)發(fā)者無(wú)法理解其運(yùn)行原理,所以用這樣一種定義方式讓人更容易理解。

如果你熟悉一門(mén)編譯型語(yǔ)言的話,可以這樣類比:
在Vue.js的這套架構(gòu)下,我們可以把ECMAScript規(guī)范理解成ARM指令集、把V8理解成ARM芯片型號(hào)、把瀏覽器理解成操作系統(tǒng)、把TypeScript理解成業(yè)務(wù)的編寫(xiě)語(yǔ)言、把編譯產(chǎn)生的JavaScript代碼理解成機(jī)器碼、把瀏覽器<script />標(biāo)簽理解為操作系統(tǒng)load機(jī)器碼、把new Vue()理解成軟件啟動(dòng)。

對(duì)整體的運(yùn)行機(jī)制有了一定的了解后,就可以開(kāi)始閱讀Vue.js的源代碼了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容