1、模板中每個指令/數(shù)據(jù)綁定都有一個對應的watcher對象,在計算過程中它把屬性記錄為依賴(touched)。之后當依賴的 setter 被調(diào)用時,會觸發(fā) watcher 重新計算 ,也就會導致它的關聯(lián)指令更新 DOM。
2、vue內(nèi)部有user watchers 和 directive watchers
3、Vue.js 默認異步更新 DOM。每當觀察到數(shù)據(jù)變化時,Vue 就開始一個隊列,將同一事件循環(huán)內(nèi)所有的數(shù)據(jù)變化緩存起來。如果一個 watcher 被多次觸發(fā),只會推入一次到隊列中。等到下一次事件循環(huán),Vue 將清空隊列,只進行必要的 DOM 更新。在內(nèi)部異步隊列優(yōu)先使用MutationObserver,如果不支持則使用setTimeout(fn, 0)。