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

相关推荐
梦帮科技几秒前
Web 漏洞攻防深度:WAF 规则逃逸技术(畸形分块传输、双重编码)与对抗加固
linux·前端·网络安全·ssl·web
兰亭妙微UI设计公司7 分钟前
兰亭妙微软件界面设计公司的解锁按钮设计10大密码
开发语言·前端·javascript
迪幻31 分钟前
封装自己的 npm 依赖并存储到个人 GitHub
前端·npm·github
u0111026751 小时前
WebP 转成 PNG 后为什么更大?图片格式转换不等于压缩
前端·javascript·vue.js
万少1 小时前
Qoder sonus模型 20分钟,复刻 马斯克 飞天汽车
前端·后端·算法
seconp1 小时前
基于Spring Boot和Vue 3的智慧旅游网站:住宿预订、行程规划与千问接入
vue.js·spring boot·毕业设计·软件工程·课程设计·旅游·毕设
java1234_小锋1 小时前
【技术专题】HTML5 网页技术 - HTML5 列表标签
前端·html·html5
强二小哥帅1 小时前
Kotlin 协程复习笔记
前端
不可能片场1 小时前
工程实践 原子替换改了 ctime 怎么修
前端·electron
暧暧内含光1 小时前
HTTP 文件传输体系全解:从协议标头、OSS 架构到流媒体分片
前端