(自用面试题)数据双向绑定的原理是什么?

116 阅读1分钟

Vue.js是采用数据劫持结合发布订阅模式的方式,通过Object.defineProperty()方法来劫持各个属性的getter和setter,在数据变动时发布消息给订阅者和触发相应的监听回调。主要分为以下几个步骤:

  1. new Vue()首先执行初始化,对data执行响应化处理,这个过程发生Observe中。
  2. 同时对模板执行编译,找到其中动态绑定的数据,从data中获取并初始化视图,这个过程发生在Compile中。
  3. 同时定义⼀个Watcher和更新函数,将来对应数据变化时Watcher会调用更新函数。
  4. 由于data的某个key在⼀个视图中可能出现多次,所以每个key都需要⼀个管家Dep来管理多个Watcher。
  5. 将来data中数据⼀旦发生变化,会首先找到对应的管家Dep,通知所有Watcher执行更新函数。

(自用面试题)数据双向绑定的原理是什么?.png