vue3.0响应式源码实践,vue3.0初体验


镇楼图--杀生丸.jpg

image.png

作者上篇文章已经对ue2.0响应式的一个原理做了比较详细的介绍,但2019年10月5日,尤小右公开了 Vue 3.0 的源代码。源码地址:vue-next,至于vue预版本的优势在github都接下来就让我给各位看官大佬介绍一个这个3.0前的一些内容吧;

vue-next(vue3.0预体验)

由于vue-next并不是最终的版本,目前有一些尤大神在知乎上尤小右 3.0 RFC曝光的一些api尚无包含,就目前版本而言,还是能体验一

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3.0 的响应式原理与 Vue 2.x 相比有所改变,主要体现在两个方面:Proxy 替代 Object.defineProperty 和 取消了异步更新。 首先,Vue 3.0 使用了ES6 中的Proxy对象替换了 Object.defineProperty 实现响应式,Proxy 对象可以代理任何类型的 JavaScript 对象,因此能够处理动态添加的属性,而 Object.defineProperty 只能劫持对象的属性访问和赋值。 其次,Vue 3.0 取消了 Vue 2.x 的异步更新机制。在 Vue 2.x 中,当数据发生改变时,Vue 会异步更新视图,将同步任务放在微任务队列中,在下一个事件循环周期中,再根据优先级执行这些任务。在 Vue 3.0 中,由于使用了 Proxy 所以对数据的改变的操作可以直接同步执行,因而取消了异步更新,这将提高应用的渲染性能。 在 Vue 3.0 中,当数据改变时,Vue 会遍历数据对象,在访问到对象属性时,通过 Proxy 拦截器劫持了它的 getter,当数据被访问时,记录用户当前的组件 target 并把组件实例添加到属性的订阅列表中,在 setter 中,把属性值重新赋值后,通知所有订阅该属性的组件更新视图。 需要注意的是,由于 Proxy 无法监听到数组的变化,因此 Vue 3.0 使用了重写数组方法的方式来实现对数组的响应式处理。具体实现也是通过在数组访问时劫持对应的方法,并且在数组改变时,通知所有依赖该数组的组件更新。 总之,Vue 3.0 的响应式原理在性能和功能上都相对于 Vue 2.x 有所提升,同时在使用中也需要注意其对数组的响应式实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值