← 返回首页

Vue3 的响应式原理是什么?相比 Vue2 有什么优势?

Vue3 的响应式核心是使用 ES6 的 Proxy 代理目标对象,配合 Reflect 操作源对象,拦截对象的读取、赋值、删除等行为。在 get 时收集依赖,在 set/delete 时触发更新。
相比 Vue2 的优势:
  • 全面拦截:Vue2 使用 Object.defineProperty 只能逐个属性劫持,无法监听对象属性的新增/删除以及数组的索引/长度变化;Vue3 的 Proxy 可以直接代理整个对象,原生支持这些操作。
  • 懒代理:Vue2 初始化时需要递归遍历所有嵌套对象,性能较差;Vue3 只有在访问到嵌套对象时才进行代理,初始化性能更优。
  • 支持更多类型:Vue3 支持 Map、Set、WeakMap 等复杂集合类型。