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.jsinitlifecycle
(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...