vue3原始碼學習

2021-10-25 14:51:30 字數 2933 閱讀 6504

"dev"

:"node scripts/dev.js --sourcemap"

>

}div>

src=

"../dist/vue.global.js"

>

script

>

>

// 初始化

// vue2: new vue().$mount//mount掛載

const

= vue //解構出來(}

}).mount()

script

>

除錯

f12->sources->設定斷點->step into next function call ->reveal in sidebar

vscode 開啟目錄: 使用 command+p 輸入目錄

scripts/dev.js

// 模組:預設vue

const target

// 打包格式,常見有umd(通用)/cjs(node)/esm(webpack) 在package.json未定義格式時,預設global,完整的格式

const formats

// 原始碼對映

const sourcemaps

rollup.config.js

// 包路徑 packages

const packagesdir

// 預設vue

const packagedir

// 預設入口是packages/vue/src/index.ts

const entryfile

// 不同格式配置 23行

const

vue.global.js 13041行 返回的例項方法 use mount etc.

packages/vue/src/index.ts

export((

...args)

=>

)//行32

function

ensurerender()

//行389

export

function createrenderer<

hostnode = renderernode,

hostelement = rendererelement

>

(options: rendereroptions

)

renderer.ts自定義了渲染器
//2236 這就是返回的渲染器

return

// 2208 初始化走這裡

// 最終轉換方法還是patch

patch()

// 446

const patch: patchfn =

// 507 初始化預設從元件

processcomponent

//1209 初始化掛載元件

mountcomponent

//1234

// 1.建立元件例項

//1259

// 2.安裝元件:元件初始化

setupcomponent

(instance)

//1279

// 安裝渲染函式

setuprendereffect

//1341 ***effect,元件更新函式新增為***函式,將來如果資料發生變化,重新執行元件更新函式

//1361 獲取根元件的vnode

//1385 將根元件vnode轉換為dom

// 114 

export((

)// 151

// vue2: vue.use(vuerouter) 靜態方法

use(),

)// 216

mount()

// 237

// 2.渲染器傳入的render方法將vnode轉換

render

(vnode, rootcontainer)

}

02-kinit.html

>

}div>

>

const

=(render)

=>

// 2.執行render

render

(vnode, container)}}

}}// 3.createrenderer

const

createrenderer=(

)=>

else

// 3.插入

insert

(child, parent)

}return

}// 2.renderer

const renderer =

createrenderer(,

createelement

(tag)

,insert

(child, parent)})

// 1.宣告vue

const vue =

} vue.(}

}).mount()

script

>

理清巢狀的基本邏輯

src=

"../dist/vue.global.js"

>

script

>

>

const

= vue

// 擴充套件函式,可以建立乙個畫布並插入到宿主元素中

createrenderer(,

insert()

,patchprops()

,})script

>

Vue3讀原始碼 1

要讀懂原始碼還是要有一定的基礎的,在此就預設是會的。我使用的工具是vscode,廢話不多說,首先看最外層的函式 var vue function exports 可以看到,vue是 裡的自執行函式的返回值exports,是個物件。exports是函式接收乙個空物件引數然後經過函式處理後返回的。那麼函...

如何除錯Vue3原始碼?

最近想系統學習一下vue3的源 本篇內容記錄和分享一下,如何除錯vue3的源 注意,vue3的原始碼是在這個 core目錄下,一些同學別一直找目錄為vue3的資料夾,那是找不到的哈。github雖好,但是對於國內使用者,總還是有點敵意,訪問的時候經常進不去,或者很慢,我在公司訪問github時好好的...

vue3 瀏覽器怎麼除錯 Vue 3 原始碼導讀

5號凌晨,尤雨溪公布了 vue 3 源 話不多說,我們趁熱對 vue 3 原始碼進行一些簡要的分析。如果你還沒有閱讀過 composition api rfc,可能無法完全看懂下面的內容。相容性目前打包後的 是 es2015 不支援 ie 11。對 typescript 的使用 目前的 98 以上使...