Vue 使用数据劫持和发布订阅模式,通过 Object.defineProperty 劫持对象属性的 getter 和 setter,当数据改变时,触发依赖收集器通知对应的数据观察者(watcher)做出更新回调更新视图。
Vue 数据双向绑定主要通过 Compile,Observer,Watcher 实现,Compile 用于编译解析模板指令、插值,Observer 用于劫持数据,监听数据的变化,Watcher 则是数据的观察者,数据发生变动,会触发 Watcher 的更新回调更新视图。
编写 Compile、Observer、Watcher、Dep 这几个类,实现插值、v-text v-html v-model v-on:click 指令。