Vue实例化时,vue会遍历 data 选项的属性,data数据通过Observer(是vue框架对数据的监听器)然后以收集依赖和更新依赖的形式通知dep(dependencies依赖包),dep得到最新的依赖数据之后通知Watcher(Watcher观察者对象分为:1.render函数(渲染机制) 2.computed(计算属性) 3.user(监听器)),Watcher拿到数据以后,调用自身的render()函数通知组件渲染dom数据。
/**特别注释**/
1.每个组件都有相应的Watcher实例,会在组件渲染的过程进行读取依赖所记录的所有数据属性;
2.如果有依赖被修改时setter通知data然后到Watcher 重新计算最后重新渲染dom组件。
总结:
vue.js是通过数据劫持结合发布-订阅模式,通过Obeject.defineproperty()来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发响应的监听回调。
链接:https://juejin.im/post/5e04411f6fb9a0166049a073
原文:https://www.cnblogs.com/jerry-FR/p/12111465.html