前端性能优化,你想知道的都在这里

  • 时间:2025-12-03 22:14 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:1. 构建速度优化使用 webpack5 持久化缓存,能明显提高构建速度,webpack4可以使用cache-loader使用 lazyCompilation 可以懒编译,能明显提高开发构建速度约束loader的include和exclude,可以跳过某些编译。使用module.noParse 可以跳过对某些文件的编译,由于有些三方库是已经编译过的,并且没有导出,如jquery优化source-m

1. 构建速度优化

  • 使用 webpack5 持久化缓存,能明显提高构建速度,webpack4可以使用cache-loader
  • 使用 lazyCompilation 可以懒编译,能明显提高开发构建速度
  • 约束loader的include和exclude,可以跳过某些编译。
  • 使用module.noParse 可以跳过对某些文件的编译,由于有些三方库是已经编译过的,并且没有导出,如jquery
  • 优化source-map的配置,使用eval-cheap-source-map可以提高构建速度, eval可缓存。
  • 借助swc, esbuild等高性能编译器,优化构建速度, 例如terser插件可以指定使用swc或esbuild对代码进行压缩。使用esbuild-loader或swc-loader加快对代码的编译和降级处理。
  • 采用并行压缩,例如:thread-loader、terser插件自带的parallel参数。
  • 使用vite-plugin-warmup 可以对Vite代码预热,能有效加快构建速度。

2. 构建体积优化

  • 尽量使用 export {} 导出代码, 若export default {}, 会被全部导出, 失去tree-shaking效果
  • 不要使用babel将esm转为cjs, 若代码是commonjs代码,将失去tree-shaking优化,需要设置baberc配置中的modules: false
  • babel搭配transform-runtime插件,可以将babel runtime的代码模块化引入,减少了代码冗余, 同时设置preset-env的useBuiltIns: 'usage'
  • babel 通过targets配置可以有效减少core-js的体积
  • lib库 酌情使用 sideEffects,通过设置package.json中的sideEffects字段,可以告知webpack哪些是纯的(无副作用),进而对lib库 tree-shaking
  • 使用 unplugin-vue-components 或 babel-plugin-import 按需引入组件
  • 可以使用 /*#__PURE__ */ 标记哪些函数没有副作用,进而tree-shaking
  • 合理配置split-chunk-plugin,例如其中的maxInitialRequests和maxAsyncRequests属性,用于控制异步模块和入口模块的拆分粒度。能有效减少重复打包的模块。如果是Vite或Rollup, 可以借助 manualChunks 对代码进行拆包
  • 三方模块,尽量提取为CDN, 可以有效减小包体积大小。
  • gzip压缩
  • 路由懒加载,可以有效减小入口文件的大小,减少白屏率。
  • 使用插件对图片进行压缩

3. 网络优化

  • 使用http2的多路复用,可以突破HTTP 1.x 的请求并发限制,头部压缩等功能。
  • 采用CDN
  • prefetch:优先级较低,可以在浏览器空闲时加载一些资源,例如提前加载下一个页面的资源,增加后续的打开速度
  • preload:优先级高,提前加载必要的资源
  • modulepreload: 原生esm可以进行预加载
  • DNS 预解析, 通过 dns-prefetch 技术将这一过程提前,降低 DNS 解析的延迟时间

4. 运行时优化

  • 虚拟列表
  • 防抖、节流
  • 图片懒加载,并且使用CDN
  • requestAnimationFrame 优化动画或一些阻塞浏览器渲染的操作
  • 动画操作使用transform,减少触发重排与重绘
  • 使用骨架屏优化用户体验
  • v-memo优化列表渲染性能

5. 其他优化

  • 服务端渲染

总结

总结了一些工作中对项目优化的手段,欢迎补充~

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】创建一个本地分支(2025-12-03 22:43)
【系统环境|】git 如何删除本地和远程分支?(2025-12-03 22:42)
【系统环境|】2019|阿里11面+EMC+网易+美团面经(2025-12-03 22:42)
【系统环境|】32位单片机定时器入门介绍(2025-12-03 22:42)
【系统环境|】从 10 月 19 日起,GitLab 将对所有免费用户强制实施存储限制(2025-12-03 22:42)
【系统环境|】价值驱动的产品交付-OKR、协作与持续优化实践(2025-12-03 22:42)
【系统环境|】IDEA 强行回滚已提交到Master上的代码(2025-12-03 22:42)
【系统环境|】GitLab 15.1发布,Python notebook图形渲染和SLSA 2级构建工件证明(2025-12-03 22:41)
【系统环境|】AI 代码审查 (Code Review) 清单 v1.0(2025-12-03 22:41)
【系统环境|】构建高效流水线:CI/CD工具如何提升软件交付速度(2025-12-03 22:41)
手机二维码手机访问领取大礼包
返回顶部