Vue原始碼解析筆記一
阿新 • • 發佈:2020-09-14
資料驅動
資料驅動檢視簡單來說就是資料變化引起檢視變化,那麼第一步就是先要知道資料什麼時候發生變化,也就是說對資料的變化要進行偵測。
變化偵測
變化偵測就是追蹤狀態,亦或者說是資料的變化,一但發生了變化,就要去更新檢視
變化偵測在angular中通過髒值檢查流程來實現變化偵測,在react中通過對比虛擬Dom來實現變化偵測
Object資料“可觀測”
Object.defineProperty方法使得資料變得“可觀測”
let car = {} let val = 3000 Object.defineProperty(car, 'price', { enumerable:true, configurable: true, get(){ console.log('price屬性被讀取了') return val }, set(newVal){ console.log('price屬性被修改了') val = newVal } })
通過Object.defineProperty()方法給Car定義一個price屬性,並把這個屬性讀取喝寫入分別使用get()和set()進行攔截,每當該屬性進行讀取或者寫入操作的時候會觸發get()和set()
依賴收集
視圖裡誰用到了這個資料就更新誰這就是依賴,在getter中收集依賴,在setter中通知依賴更新。