
- 创建Vue实例对象,记录传入的选项,并注入到Vue实例当中
- 创建observer
- observer数据劫持,通过
Object.defineProperty
把data中属性转换成getter和setter,当数据变化,触发setter方法时,告诉dep,通知变化,要调用dep的notify方法
- dep的notify方法,发送通知,会调用watcher的update方法,更新视图
- 这是数据变化的时候才会发生的
- 创建watcher对象的时候,会把当前的watcher对象添加到dep的subs数组中,就是收集dep依赖的watcher。
- 创建compiler
- 解析指令,解析差值表达式。页面首次加载,会去调用compiler里的相关方法,渲染视图
- compiler里订阅数据变化(实例化watcher),当数据变化,dep会通知watcher
- 绑定更新函数,就是实例化watcher时,要传入回调函数,在回调函数里更新视图
- 页面首次加载,通过compiler渲染视图,数据变化时通过watcher渲染视图
实现一个最小版本vue(六)之总结
原文:https://www.cnblogs.com/Evo1uti0n/p/13267843.html