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

相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A2 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄2 天前
JavaScript 隐式全局变量解析
javascript
honkun62 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19912 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net