美文网首页
Vue3.0 的性能优化

Vue3.0 的性能优化

作者: 南枫小谨 | 来源:发表于2021-06-07 14:35 被阅读0次

1.diff算法优化

vue2.0 中虚拟dom 是全量对比;vue3.0 中新增了静态标记(patchFlag),只对比有PF的节点,并且通过Flag的信息对比节点的具体内容。
通俗来讲就是中解析模板字符串时,将纯静态元素与动态元素分开。静态元素放在children,动态元素放在dynamicChildren,diff时只比对dynamicChildren就可以了。

// Block - Block Tree
{
  tag: 'div',
  children: [
    { tag: 'h1', children: 'hello world!' },
  ],
  dynamicChildren: [
    // 所有子元素中动态的部分哦
    { tag: 'p', children: ctx.text, patchFlag: 1 /* TEXT */ },
  ]
}

2.剪枝 Tree Shaking

剪掉不必要的模块,没用到的模块不会打包到文件中。

3.静态树提升 Static Tree Hoisting

   简而言之就是做了个缓存,不参与更新的元素只会被创建一次,在下次渲染时直接复用就可以。那么对于非静态元素怎么办呢?那就看看它的属性,属性中的静态部分也是可以做静态提升的。尽最大可能将可静态提升的不分静态提升。

4.cacheHandlers 事件侦听器缓存

    默认情况下onClick 会被视为动态绑定,所以每次会追踪它的变化,但是没有变化,只要缓存起来。下次从缓存里面取就可以了。

5. 基于 Proxy 的观察者机制

Object.defineProperty是一个相对比较昂贵的操作,因为它直接操作对象的属性,颗粒度比较小。将它替换为es6的Proxy,在目标对象之上架了一层拦截,代理的是对象而不是对象的属性。这样可以将原本对对象属性的操作变为对整个对象的操作,颗粒度变大。

javascript引擎在解析的时候希望对象的结构越稳定越好,如果对象一直在变,可优化性降低,proxy不需要对原始对象做太多操作。

相关文章

  • Vue3.0 的性能优化

    1.diff算法优化 vue2.0 中虚拟dom 是全量对比;vue3.0 中新增了静态标记(patchFlag)...

  • VUE3.0

    Vue3.0六大亮点 Performance:性能比Vue 2.x快1.2~2倍(重写虚拟DOM,优化了模板编译)...

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

网友评论

      本文标题:Vue3.0 的性能优化

      本文链接:https://www.haomeiwen.com/subject/oxxheltx.html