Vue3 为什么比 Vue2更快

271 阅读1分钟

响应式Proxy

Proxy 对比 defineProperty 不需要初始化进行深度监听数据,而是只在触发get才会对子数据进行监听

PathFlag

对模版编译对带有动态节点进行标记

<div>Hello World</div>
<div>{{msg}}</div>
<div :id="str"></div>

image.png

hoistStatic

  • 把静态节点提升到父作用域缓存起来,
  • 多个相连静态节点合并缓存

image.png

<div>Hello World</div>
<div>{{msg}}</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div>Hello World</div>
<div :id="str"></div>

cacheHandler

缓存事件

_cache[0] || (_cache[0] = (...args) => (_ctx.handle && _ctx.handle(...args)

就是存到数组里, 暂时没明白优化点在哪里,有大佬讲解吗

SSR优化

  • 静态节点跳过vnode创建, 直接输出

tree-shaking

  • 根据使用的的api引入对应的api, 没有使用的就不会被打包