VUE CLI 项目打包优化

265 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

学习打包优化前需要了解 webpack。 所谓的优化主要涉及到两方面:

  • 构建速度的优化
  • 构建质量的优化

大多数 Vue 项目是基于 VueCLI 搭建的,而 VueCLI 的底层建筑是 webpack。webpack 是现在主流的功能强大的模块化打包工具,在使用 webpack 时,如果不注意性能优化,有非常大的可能会产生性能问题,性能问题主要分为开发时打包构建速度慢开发调试时的重复性工作、以及输出文件质量不高等,因此性能优化也主要从这些方面来分析。

  • 分析打包结果
  • 把 VueCLI 升级到最新稳定版
  • Gzip 压缩
  • 不打包第三方包
  • 路由懒加载
  • 按需加载第三方组件

分析打包结果

  • 如果你的编译速度慢,那么可以通过分析打包结果来知道是哪个包比较费时。
    • 打包的内容
    • 找出最大的模块
    • 查找错误到达的模块
    • 优化它!

通过分析打包结果,我们可以看到哪些包占用了打包的时间,还有哪些包的结果体积比较大。

vue-cli-service build 会在 dist/ 目录产生一个可用于生产环境的包,带有 JS/CSS/HTML 的压缩,和为更好的缓存而做的自动的 vendor chunk splitting。它的 chunk manifest 会内联在 HTML 里。

这里还有一些有用的命令参数:

  • --modern 使用现代模式构建应用,为现代浏览器交付原生支持的 ES2015 代码,并生成一个兼容老浏览器的包用来自动回退。

  • --target 允许你将项目中的任何组件以一个库或 Web Components 组件的方式进行构建。更多细节请查阅构建目标

  • --report--report-json 会根据构建统计生成报告,它会帮助你分析包中包含的模块们的大小。

生成报告 npm run build --report

Gzip 压缩

  • Gzip 压缩是一种数据传输过程中的压缩方式,它可以极大的压缩文件的大小。它不影响原始文件

一种文件压缩格式。用于HTTP 协议。Gzip 开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高文件传输的速度。

把 VueCLI 升级到最新稳定版

VueCLI 是基于 webpack 构建的,它的升级可能会带来编译速度的提升或是编译质量的提升。

使用下面的命令查看你的 VueCLI 版本: vue --version

升级 VueCLI:npm install -g @vue/cli

不打包第三方包

  • 提高编译的速度。

影响打包速度最根本的原因就是某些第三方包体积过大,所以打包速度就很慢。不对它打包!不要让 webpack 来处理它。可是不处理它,把它放哪里呢?通过 script 标签加载它,就不被 webpack 处理了。我们推荐使用第三方的 CDN 来加载资源,所谓的 CDN 说白了就是一个在线链接。

推荐 jsdelivr

路由懒加载

  • 我们自己的代码非常多,将来 app.xxx.js 也会随之变得越来越大。文件太大的话会造成首次加载很慢。所以我们可以通过路由懒加载的方式优化它。

按需加载第三方组件

  • 使用的组件不是太多,建议按需加载,所谓的按需加载就是仅仅只把使用到的组件打包到结果中,可以减小打包结果体积。