Vue的性能优化
重点关注
- 优化 props(activeId => active)
- 虚拟列表 virtualList
- v-once、v-memo
- 无渲染组件与高阶组件的使用
Vue3 的性能优化应从哪几个方面展开?
1.打包构建(webpack、vite)
- 产物:
- terser、uglify(压缩、丑化)
- chunk
- tree-shaking
- turborepo、nx(构建缓存)
- 开发时:
- MFSU(Umi4:基于webpack的构建提速)
- happypack(多线程打包)
- dll、cache
2.应用层面
- 懒加载
- 合理设计组件的颗粒度(Page => PageHeader、PageContent、PageFooter)
- 细颗粒度更新(Pinia,订阅的对象尽量修改到最小)
let arrs = [{name: 'b1'}, {name: 'b22'}, {name: 'b3'}] // 因为 b1、b3 没变
- transform减少重排,完成动画
- 接口请求缓存
- 虚拟列表、表格
- 性能优化(v-once、Keep-Alive)
- Web Worker 用于耗时计算
const num = 10_00000
for (let i = 0; i < num; i++) {
// 理解为耗时计算
}
3.资源加载
- 压缩,gzip
- 字体文件压缩,(静态网站就用
font-spider
提取使用到的文字) - oss、cdn
- http1.2(http1 和 2 的区别?)
- 相对于HTTP1.0,HTTP1.1的优化
- 相对于HTTP1.1,HTTP2的优化
4.缓存
- 强缓存(Cache-Control、Expire)
- 协商缓存(Last-Modified、Etag,If-Modified-Since、If-None-Match)
- 策略缓存(service-worker)
5.首屏加载
- SSR(Nuxt-vue、Next-react)
- prefetch(node 层,首屏预加载 )