温馨提示:今天重温vuejs的响应式,发现在看源码(2.5.17-beta.0版本)的时候,被一些流程弄糊涂了。我特此写下我今天的收获。vuejs的双向数据绑定离不开发布订阅者模型,通常会有一个“中间人”负责调度和协调发布者与订阅者之间的关系。在vuejs中,Dep实例是“中间人”,负责依赖收集和通知更新的调度。大致流程图如下:依次说明:Observer:发布者,负责代理数据的get和set属性,使得对数据的操作有依赖收集(get时调用)和变化更新通知(set时调用)Dep:中间人,调度发布订阅者和订阅者之间的关系。当Watcher获取数据时,Observer通知Dep收集订阅者,订阅者同时收集依赖;Watcher:订阅者,视图更新,计算属性值获取,调用watch选项的回调方法会触发Watcher类的实例方法get()的执行,在获取值的同时收集依赖,在同一个更新中移除依赖循环以避免重复触发渲染视图更新;
