VUE 執行流程 個人筆記

喝可樂的騎士發表於2017-12-14

初始化Dtata

初始化執行在VUE內部屬性上加入componennts directive等定義一些全域性API 像Vue.use Vue.mixin

例項化VM元件的時候會根據data屬性

initData 會對option.data屬性進行遍歷新增監聽,這裡會有展開屬性的操作,進入defineReactive$$1函式。建立ObjectDefinePrototype閉包,將dep例項存放在內部引用,defineReactive$$1定義get set屬性

元件的child.$mount 這是單頁面形式 如果單使用VUE 提供el的話 是直接進入mount方法 mountComponent

建立Watcher例項,繫結在當前的例項,傳入updateComponent方法,也是就VM_update

在watcher建構函式中獲取當前的value,進入this.get,設定Dep.target為當前的watchert(因為defineReactive 方法裡是額外呼叫的,需要設定全域性變數來獲取,Dep.target 是當前的watcher例項)這個時候之前在initData已經註冊過的會開始呼叫物件的get屬性,

webpack把模板轉換為_c函式 分為靜態不編譯和動態編譯的陣列 [_c('h1', [_vm._v(_vm._s(_vm.msgaaa))])]) 生產Vnode

問題1

呼叫屬性get出錯怎麼辦

相關文章