vue双向绑定原理

observer Dep watcher
将data中的值进行defineProperty监视,遇到对象则递归调用,直到所有都被defineProperty。 是用来装入watcher的队列。由Observer主动触发。 在渲染dom时实例化watcher
在get时,将Dep.target放入dep队列中。在set时,通知dep进行更新。 每一个dep实例装着对应的watcher 每完成一个watcher的实例化后,将自身缓存在Dep.target上。watcher中的回调函数用来直接更新html节点。

observer

1.将data中的值进行defineProperty监视,遇到对象则递归调用,直到所有都被defineProperty。
2.在get时,将Dep.target放入dep队列中。在set时,通知dep进行更新。

Dep

是用来装入watcher的队列。由Observer主动触发。

watcher

1.在渲染dom时实例化watcher
2.每完成一个watcher的实例化后,将自身缓存在Dep.target上。
3.watcher中的回调函数用来直接更新html节点。

解析器

用来解析V-DOM、渲染真实dom并实例化watcher。

过程

1.首先html渲染时获得data的值如name时,调用一次observer,此时Dep.target为null,直接返回name的值

2.紧接着实例化一个name的watcher,调用方法将自身缓存在Dep.target上。然后获取name值,触发observer。在observer中,同时将Dep.target,也就是自身放入dep队列。回到watcher,释放Dep.target。

3.可以这样理解。 data有几个属性,就实例化几个Dep。每一个dep实例中,dom上有几个{{}},就有几个watcher vue双向绑定原理_第1张图片

你可能感兴趣的:(Vue,vue.js)