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 应用,也是面试的重点。

相关推荐
风骏时光牛马9 分钟前
提示词工程:大模型效能挖掘与指令设计实战
前端
仓三11 分钟前
Chrome DevTools MCP 上手:让 Coding Agent 自己调试前端页面
前端·chrome devtools·mcp
计算机魔术师17 分钟前
扒完Google AI Agent挑战赛的前三名,我发现了一个共同点
前端
独立开发之道21 分钟前
【three.js教程】Three.js 运行时更新:矩阵、几何体、材质怎么改才不卡
javascript·矩阵·材质
不可能片场37 分钟前
resources/app 为何能覆盖 app.asar
前端·electron
小婉38 分钟前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
skiyee1 小时前
🚀 用 17 行代码给 UniApp 加上全局登录拦截
前端·uni-app
默_笙1 小时前
🌃 HTTP 不认识你:JWT 登录鉴权的完整"酒店入住"指南
前端·javascript
Profile排查笔记2 小时前
JavaScript 实现浏览器指纹生成:基础字段、Canvas 采样与 SHA-256 摘要
前端·人工智能·后端·自动化
不可能片场2 小时前
Electron 子进程退化成 node 的 env 陷阱
前端·electron