Vue 的响应式原理

3 阅读1分钟

Vue 的响应式原理基于 MVVM 模式,核心是实现 数据与视图的双向绑定。

MVVM 三层结构:

  • Model(M):数据层,负责存储业务数据
  • View(V):视图层,负责展示 UI
  • ViewModel(VM):连接 View 和 Model,实现响应式绑定

Vue 的 ViewModel 层核心由 Observer(监听器) 和 Compiler(解析器) 组成:

  • Observer:使用 Object.defineProperty(Vue 2)或 Proxy(Vue 3)对数据对象进行劫持,拦截 getter 和 setter,实现对数据的监听
  • Compiler:解析模板中的指令(如 v-model, v-bind, v-on),将指令与数据绑定,生成更新函数(Watcher)
  • Watcher:每个绑定的数据会对应一个 Watcher,当数据变化时,通知相关的 Watcher 触发更新视图
  • Dep(依赖收集器):在 getter 中收集依赖,在 setter 中通知更新

在 Vue 3 中,Vue 放弃了 Object.defineProperty 的限制,改用 Proxy 实现响应式,这样可以直接监听对象的新增/删除属性和数组变化,性能和能力更强。