当前位置: 首页 > wzjs >正文

建立自己的网站平台做电子商务网站的公司

建立自己的网站平台,做电子商务网站的公司,高端求职网站排名,宣传片制作公司有哪些类型Vue 2 和 Vue 3 的响应式原理在实现机制上有显著差异,这些差异直接影响了性能、开发体验和代码结构。应付面试,我是懒得记╮(╯▽╰)╭,无奈的人 文章目录一、Vue 2 的响应式原理核心技术:Object.defineProperty工作流程&#xff…

Vue 2 和 Vue 3 的响应式原理在实现机制上有显著差异,这些差异直接影响了性能、开发体验和代码结构。应付面试,我是懒得记╮(╯▽╰)╭,无奈的人

文章目录

    • 一、Vue 2 的响应式原理
      • 核心技术:`Object.defineProperty`
      • 工作流程:
      • 局限性:
    • 二、Vue 3 的响应式原理
      • 核心技术:`Proxy` + `Reflect`
      • 工作流程:
      • 优势:
    • 三、对比总结(可以记这里)
    • 文字记录
    • 四、源码简要示意
      • Vue 2 示例(简化)
      • Vue 3 示例(简化)


一、Vue 2 的响应式原理

核心技术:Object.defineProperty

Vue 2 使用 Object.defineProperty 来劫持数据属性的 getset 方法,从而实现响应式追踪。

工作流程:

  1. 初始化阶段

    • data 中的每个属性进行递归遍历。
    • 使用 Object.defineProperty 将其转换为响应式的 getter/setter。
  2. 依赖收集(Dep)

    • 在组件渲染时访问数据属性,触发 get,将当前 Watcher 添加到该属性的依赖列表中。
  3. 派发更新(Watcher)

    • 当数据变化时,触发 set,通知所有依赖的 Watcher 更新视图或执行回调。

局限性:

  • 不能监听数组索引修改和 length 变化,需通过重写数组方法(如 pushpop 等)来实现响应。
  • 新增属性必须使用 $set 才能响应式化,否则不会被自动追踪。
  • 初始化时需要递归处理对象,性能较差,尤其在大型对象上。

二、Vue 3 的响应式原理

核心技术:Proxy + Reflect

Vue 3 改用 Proxy 实现响应式系统,提供了更强大和灵活的数据劫持能力。

工作流程:

  1. 创建响应式对象

    • 使用 new Proxy(target, handler) 拦截对对象的操作。
    • handler 中定义 getsetdeleteProperty 等操作。
  2. 依赖收集与更新通知

    • 利用 WeakMap 存储对象与依赖之间的映射关系。
    • 每个属性对应一个 Dep(依赖集合),在 get 时收集依赖,在 set 时触发更新。
  3. 嵌套响应式支持

    • 在访问嵌套属性时自动进行响应式包装。
  4. 副作用管理

    • 引入 effect 函数作为副作用容器,便于统一调度和清理。

优势:

  • 支持监听对象新增/删除属性,无需 $set
  • 可监听数组索引变化和 length 修改,无需重写数组方法。
  • 性能优化:只在首次访问属性时才进行响应式包装,避免 Vue2 中的递归处理。
  • 拦截更多操作类型:如 indeleteapplyconstruct 等,扩展性强。

三、对比总结(可以记这里)

特性Vue 2Vue 3
响应式核心Object.definePropertyProxy + Reflect
数组支持需重写方法天然支持索引和 length
新增属性必须 $set自动响应
性能初始化开销大惰性处理,性能更好
依赖收集组件级 Watcher更细粒度的依赖追踪
内存占用较高更优,利用 WeakMap

文字记录

  • Vue 2 的响应式是基于 defineProperty 的静态属性劫持,存在明显局限。
  • Vue 3 的 Proxy 实现更加灵活、高效,解决了 Vue 2 的诸多痛点。
  • Vue 3 的响应式系统是迈向现代化前端框架的重要一步,也为后续的 Composition API 提供了坚实基础。

四、源码简要示意

Vue 2 示例(简化)

function defineReactive(obj, key, val) {const dep = new Dep();Object.defineProperty(obj, key, {get() {Dep.target && dep.addSub(Dep.target);return val;},set(newVal) {if (val === newVal) return;val = newVal;dep.notify();}});
}

Vue 3 示例(简化)

function reactive(target) {return new Proxy(target, {get(target, key, receiver) {track(target, key); // 收集依赖return Reflect.get(target, key, receiver);},set(target, key, value, receiver) {const result = Reflect.set(target, key, value, receiver);trigger(target, key); // 触发更新return result;}});
}

http://www.dtcms.com/wzjs/565091.html

相关文章:

  • 安装网站出现dir公司网站建设的目的和意义
  • 北京诚通新新建设有限公司网站做a视频 免费网站
  • 福州精美个人网站建设公司国家工信部备案网站
  • 濮阳做网站做网站要什么功能
  • 帮做3d模型的网站景区加强网站建设
  • 做视频网站需要什么资质智能网站建设哪家效果好
  • 内网做网站需要空间吗南京html5响应式网站建设
  • 如何对新开网站做收录织梦网站添加视频教程
  • 电商网站平台建设资金预算厦门关键词seo排名网站
  • 营销版网站dede手机网站模板下载
  • 消费返利系统网站建设ip直接访问网站 备案
  • 建设网站不会写代码北京网站建设电扬科技
  • 淘宝的网站怎么做的好在线推广网站的方法
  • 海外产品网站建设WordPress数据消失
  • 中天建设中瑞物资网站狼雨seo培训
  • 北京网站优化常识纯flash网站
  • 如何把网站上传到空间网站开发的经济效益分析
  • 程序界面设计搜索引擎优化结果
  • seo网站排名后退网站建设与管理的展望与未来
  • 如何做好企业网站用手机下载地图到内全卡
  • 自贡百度做网站多少钱广州网站建设广州网络推广公司好
  • 建网站卓设计公司网站应该包括的信息
  • 网站设计模式海口制作网页公司
  • 做网站广告多少钱宁波seo推广如何收费
  • 网站标题关键字增城网站建设推广
  • 北京营销型网站建设公司广告设计与制作软件有哪些
  • 鹤壁 网站建设垡头网站建设
  • 哈尔滨建设厅网站网站后台管理系统怎么做的
  • 西安有哪些网站建设公司wordpress 主机和域名绑定
  • 甜品制作网站厦门营销型网站建设公司