vue3
大约 1 分钟
vue3
1、vue2 和 vue3 的区别
- 生命周期:整体变化不大,只是 vue3 中大部分生命周期钩子前加上了
on
,功能上都是类似的。不过在 vue3 中,这些钩子都要先引入了才能使用。destroy
改为了unmount
- setup:vue3 提供了一个
setup()
函数和setup
语法糖的形式去书写逻辑代码,即组合式 API 的写法,且在setup
中,beforeCreate 和 created
不需要显示的定义,因为setup
本就是围绕这两个钩子运行的。 - 多根节点:在 vue3 的
template
中可以有多个根节点了,但是在 vue2 中只能有一个 - 异步组件
Suspense
:具体请看这里 - 传送组件
Teleport
:具体请看这里 - 响应式原理:vue2 响应式使用的是
Object.defineProperty()
,vue3 使用的是new Proxy()
,具体请看 - 虚拟DOM 和 diff 算法:这个比较麻烦,我也理解得不是很透彻,因此先搁置,等后续闹明白了再写上去。
- ts 支持:vue3 天然支持 ts
- 打包优化
2、vue3为什么使用proxy
- proxy可以直接代理整个对象,无需递归;difineProperty只代理对象上的某个属性,要代理深层次的属性需要递归
- proxy可以监听深层次的属性变化
- proxy代理对象会生成新的对象,不会修改被代理对象本身
- proxy不兼容ie浏览器