Vue.js 响应式原理详解

Vue.js 响应式原理详解

Vue.js 是一款流行的前端渐进式框架,其核心特性之一就是响应式系统。本文深入讲解 Vue 响应式的实现原理。

什么是响应式

当数据发生变化时,视图会自动更新。Vue 通过数据劫持 + 依赖收集实现这一机制。

核心实现

Vue 2 使用Object.defineProperty劫持属性的 getter/setter。

functionobserve(obj){Object.keys(obj).forEach(key=>{letvalue=obj[key]Object.defineProperty(obj,key,{get(){returnvalue},set(newVal){if(newVal!==value){value=newVal// 触发更新}}})})}

Vue 3 的 Proxy 方案

Vue 3 使用 ES6 的Proxy实现响应式,性能更高,支持新增属性。

constproxy=newProxy(target,{get(target,key){track(target,key)},set(target,key,value){trigger(target,key)}})

总结

理解响应式原理有助于编写高质量 Vue 应用,也是面试的重点。