Vue.js 响应式原理详解

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

什么是响应式

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

核心实现

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

javascript 复制代码
function observe(obj) {
  Object.keys(obj).forEach(key => {
    let value = obj[key]
    Object.defineProperty(obj, key, {
      get() { return value },
      set(newVal) {
        if (newVal !== value) {
          value = newVal
          // 触发更新
        }
      }
    })
  })
}

Vue 3 的 Proxy 方案

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

javascript 复制代码
const proxy = new Proxy(target, {
  get(target, key) { track(target, key) },
  set(target, key, value) { trigger(target, key) }
})

总结

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

相关推荐
jaysee-sjc1 小时前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
岁月留痕1681 小时前
11 实战项目一:搭建“一言”项目骨架
前端
BreezeJiang1 小时前
为什么 Next.js 要把组件切成两半?从一个 SEO 死穴说起
javascript·react.js
用户2181697049301 小时前
Flutter (十五) CustomScrollView PageView
前端
Molecular_Chat1 小时前
Biotin SNA 生物素偶联凝集素结合特异性、生物素标记效率定量表征研究
javascript·python
WILLF1 小时前
Python vs JavaScript 异常处理对比
前端·python
__sjfzllv___1 小时前
在职前端Leader学习/转行 AI Agent -DAY31
前端
岁月留痕1681 小时前
4 Dart 篇:异步(并发)
前端
MartinYeung51 小时前
[论文学习]AdInject:通过广告投放对Web代理发起真实世界黑盒攻击
前端·学习