Vue3对比Vue2做了哪些优化

1.源码优化

  • (1)源码的优化主要体现在使用menorepo和TypeScript管理和开发源码,提升了自身代码的可维护性

  • (2)相对于Vue2的源码组织方式,menorepo把这些模块拆分到不同的package中,每个package有各自的API、类型定义和测试,使得模块拆分更细化,职责划分更明确,模块之间的依赖关系也更加明确,开发人员更容易阅读、理解和更改所有模块源码,提高代码的可维护性

  • (3)package是可以独立于vue.js使用,这一点是vue2做不到的,可以单独依赖这个响应式库而不用去依赖整个vue.js,减少了引用包的体积大小

  • (4)使用了TypeScript有类型语言开发

2.性能优化

  • (1)源码体积上:引入了tree-shaking的技术,通过编译阶段的静态分析,找到没有被引入的模块并标记,如果你在项目中没有引入Transition、keepAlive等组件,那么它们对应的代码就不会打包,减小了代码体积

3.数据劫持优化

  • 数据是响应式的,必须劫持数据的访问和更新,使用了Proxy对数据进行劫持,Proxy不能监听到内部深层次的对象变化,因此Vue3的处理方式是在getter中去递归响应式,这样的好处是真正访问到的内部对象才会变成响应式,而不是无脑递归

4.编译优化

  • Vue2的数据更新并触发重新渲染的粒度是组件级别的,而Vue3通过编译阶段对静态模板的分析,编译生成了Block Tree

  • Block tree是一个将模板基于动态结点指令切割的嵌套区块,每个区块内部的结点结构是固定的,每个区块只需要以一个数组来追踪自身包含的动态结点

  • 借助Block tree , vue3将vnode更新性能由与模板整体大小相关提升为与动态内容的数量相关

  • 在编译阶段还包含了对slot的编译优化、时间侦听函数的缓存优化,并在运行时重写了diff算法

5.优化逻辑组织

  • Composition API:将某个逻辑关注点相关的代码放在一个函数里,当需要修改一个功能时,就不需要在文件中跳来跳去

6.优化逻辑复用

  • Vue2中的mixins都可以定义自己的props,data,它们之间是无感的,所以很容易定义相同的变量,导致命名冲突。

  • 对组件而言,如果模板中使用不在当前组件中定义的变量,那么就会不太容易知道这些变量在哪定义,导致数据来源不清晰,Vue3.0的composition API很好的解决的了mixins的这个两个问题

  • 除了在逻辑复用方面,composition API有更好的类型支持

  • 因为它们都是一些函数,在调用函数时,类型也就被推到出来了,不像Options API所有的东西都使用this

  • composition API 对tree-shaking友好,代码更加容易压缩

7.RFC(Request For Comments)

  • 旨在为新功能进入框架提供一个一致且受控的路径

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值