vue2 x原始碼導讀

2021-10-23 05:51:31 字數 1575 閱讀 2536

src\platforms\web\entry-runtime-with-compiler.js

src\platforms\web\runtime\index.js

src\core\index.js

src\core\instance\index.js

建構函式的定義:

function

vue(options)

initmixin

(vue)

// 實現了_init()

statemixin

(vue)

eventsmixin

(vue)

lifecyclemixin

(vue)

rendermixin

(vue)

src\core\instance\init.js
initlifecycle

(vm)

// $parent,$root,$children,$ref的初始化

initevents

(vm)

// 處理父元件傳遞的***

initrender

(vm)

// $slots,$scopedslots,_c(),$createelement()

callhook

(vm,

'beforecreate'

)initinjections

(vm)

// 獲取注入的資料(先獲取父給的資料)

initstate

(vm)

// 初始化元件中的props、methods、data、computed、watch

initprovide

(vm)

// 提供資料(將父給的資料和自己的資料統一提供給後代)

callhook

(vm,

'created'

)

src/core/instance/state.js

資料初始化

if

(opts.data)

else

,true

/* asrootdata */

)}

initdata()呼叫observe,判斷data屬性與props屬性、方法名的重複

observe(data, true /* asrootdata */)
src/core/observer/index.js

返回乙個observer例項

ob = new observer(value)
observer類:判斷資料物件的型別,做相應的處理

definereactive()給data中每乙個key做資料劫持進行響應化處理

src/core/observer/dep.js

維護和管理若干watcher

src/core/observer/watcher.js

維護和管理若干dep

src/core/observer/array.js

陣列響應化處理

Vue2 x 原始碼閱讀筆記

定義 vue 的 init 方法 初始化 vm.options 初始化生命週期 初始化 events 初始化 render 呼叫鉤子函式 beforecreate 初始化 injections 初始化 state 初始化 methods 初始化 data 初始化 computed 初始化 watch...

Vue2 x原始碼解讀 模板編譯

模板編譯作用模板編譯入口 模板編譯的入口在 mount方法中,在處理使用者傳入的template時,會將使用者傳入的template轉化為render函式。在原始碼的src platforms web entry runtime with compiler.js檔案中定義了這個處理過程。模板編譯的過...

VUE 原始碼導讀

斷斷續續耗費了近乙個月的時間,將vue 2.6版本的原始碼大致看了下。自己的理解,主要分兩個部分,工具方法準備和vue物件。工具準備 var strats var lifecycle hooks beforecreate created beforemount mounted beforeupdat...