- Vue响应式原理模拟
- 整体分析
- Vue基本结构
- 打印Vue实例观察
- 整体结构
- Vue —> Observer(数据劫持) —> Dep(发布者) —> Watcher(观察者)
- Vue —> Compiler(解析指令) —> Watcher(观察者)
- Vue 把data中的成员注入到Vue实例,并且把data中的成员转成getter/setter - Observer 能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知Dep
- Vue
- 功能
- 负责接收初始化的参数(选项)
- 负责把data中的属性注入到Vue实例,转换成getter/setter
- 负责调用observer监听data中所有属性的变化
- 负责调用compiler解析指令/差值表达式
- Observer
- 功能
- 负责把data选项中的属性转换成响应式数据
- data中的某个属性也是对象,把该属性转换成响应式数据
- 数据变化发送通知
- Compiler
- 功能
- 负责编译模板,解析指令/差值表达式
- 负责页面的首次渲染
- 当数据变化后重新渲染视图
- Dep
- 功能
- 收集依赖,添加观察者(watcher)
- 通知所有观察者
- Watcher
- 功能
- 当数据变化触发依赖,dep通知所有的Watcher实例更新视图
- 自身实例化的时候往dep对象中添加自己
- 总结-整体流程:
- 图示:
