Vue.js 是一款前端框架,在這個框架中存在著 dep 這個概念,dep 的全稱是 dependency,在中文中一般翻譯為依賴。
const dep = { subs: [], // 添加觀察者 addSub(sub) { this.subs.push(sub) }, // 移除觀察者 removeSub(sub) { remove(this.subs, sub) }, // 通知所有觀察者更新 notify() { if (!this.subs.length) { return } // 防止 subs 數組被修改,這里使用 slice 做一個淺拷貝 const subs = this.subs.slice() for (let i = 0, l = subs.length; i< l; i++) { subs[i].update() } } }
在 Vue 中,dep 實際上是一個訂閱者列表,負責存儲所有訂閱當前數據的 watcher。當該數據發生變化時,該 dep 會通知其中的所有 watcher 再次執行。
在 Vue 的數據響應式系統中,每個雙向綁定的數據都會對應一個 dep 對象,當該數據被修改時,與該數據相關聯的 dep 對象會負責通知所有依賴該數據的 watcher。
一個重要的概念是,在 Vue 中,每個 watch 都是依賴于相應的 dep 對象的。當 watch 依賴的數據發生變化時,dep 會通知 watch 去執行。
上一篇es json查詢
下一篇vue deltools