https://blog.csdn.net/zxo_apple/article/details/109244117
https://baijiahao.baidu.com/s?id=1685654982443092720&wfr=spider&for=pc

性能优化

每次重新渲染 都要创建虚拟节点 createdVnode 这个方法

静态提升 对静态节点进行提取

事件缓存

缓存事件,防止每次重新渲染都会重新创建事件

最核心的变化

响应式原理

proxy -》 defineProperty。
proxy 是懒代理,只有取值的时候才会去代理,defineProperty 是一开始就递归所有属性进行代理,导致新添加的属性不会生效。

diff 算法

vue2 是全量diff,双指针,虽然也标记了静态节点,但是vue3 的 diff 算法 可以根据 patchFlag 精准做diff,哪个属性哪个类名, 最长递增子序列

AIP

vue2 是options Api,功能拆分的比较分散,比如声明一个变量要放在 data 里,定义一个计算属性要放在 computed 里

vue3 是 compositionsApi,可以把一个功能放在一起,实现功能复用,其实就是抽离成了函数。

多个根节点

vue 支持 多个根节点,原理是会在 babel 编译阶段 增加个 Fragment。

语言

Vue3 ts,不饿
flew

自定义渲染器 createRender()

传入自己的渲染的方法,可以根据vue 核心 来实现不同平台的代码。

代码管理方式

vue3 monorepo 代码管理方式

模板编译优化