vue 源码解析:
1: 数据劫持: vue.js 则死采用数据劫持的方式结合发布者 - 订阅者模式的方式, 通过Object.defineproperty() 来进行劫持各个属性的setter, 和 getter , 在数据变动的时候发布消息给订阅者, 触发相应的监听回调。
2: 在new vue 的实例的时候, 会监听属性, 一个类。 需要一个观察者,劫持一个属性, 通过Object.defineproperty() 中的 getter 和 setter 方法,
有多个属性就会创建多个观察者, 但是观察者有一堆, 就需要放到观察者容器中,这个容器叫做订阅器。订阅器是一个数组, 可以和我们的observer 进行关联,
更新视图就是更新节点, 入口函数传递过来一些数据: 通过object,defineproperty() 通过数据劫持,setter 和 getter 方法: 一旦数据发生变化就会通知订阅器找到对应的订阅者。 然后去更新对应的视图。
订阅器的作用: 有两个作用: 通知watcher (订阅器更新视图) 第二: 存放多个订阅器
watcter : 作用就是更新视图。 observer: 作用就是就是通过object.defineproperty() 劫持数据, complie: 解析el 模板中的指令。 使用正则表达式进行指令, muster 语法解析。
watcher: 是一个订阅者, ob: 是监听器:
1 : 首先实现一个指令的解析器: complie
2: 实现一个数据监听器 observer
3: 去实现一个 watcher 更新视图 (数据监听器)
4:实现一个proxy 代理