因为我对 vue
比较熟悉,这里就要 vue
来讲
vue
是采用数据劫持配合发布者-订阅者模式的方式,通过 Object.defineProperty
来劫持各个熟悉的 setter
和 getter
,在数据变动时,发布消息给依赖收集器,去通知观察者,做出对应的回调函数去更新视图。
MVVM
作为绑定的入口, 整合 Observer
类(Observer
类主要做劫持并监听各个属性的 setter
和 getter
,用的就是Object.defineProperty
的方法)、Compile
和 Watcher
类三者,通过Observer
来监听数据变化,通过 Compile
来解析编译模板指令,最终利用 Watcher
搭起 Observer
和 Compile
之间的通信桥梁,达到数据的变化后影响视图的更新,并且视图交互变化也会影响数据的双向绑定效果。