Vue项目打包优化流程详解

Vue项目打包优化

优化方案

1. 路由懒加载

Vue 是单页面应用,可能会有很多的路由引入 ,这样使用 webpcak 打包后的文件很大,当进入首页时,加载的资源过多,页面会出现白屏的情况,不利于用户体验。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应的组件,这样就更加高效了。这样会大大提高首屏显示的速度,但是可能其他的页面的速度就会降下来。

可根据官网操作:
https://router.vuejs.org/zh/guide/advanced/lazy-loading.html

2. 第三方插件按需加载

element-ui,vant,uni-app等等… 实现按需加载,同时我们可以借助 babel-plugin-component ,然后可以只引入需要的组件,以达到减小项目体积的目的

3. 插件库使用CDN加速,导入插件时使用第三方库进行使用。

https://www.bootcdn.cn/ 官网 根据自己项目package.json文件对应版本进行导入

index.html中引入对应版本 我这里基于Vue2项目进行引入。

<!-- vue -->
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>
<!-- vue-router -->
<script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.5.1/vue-router.min.js"></script>
<!-- axios -->
<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.1/axios.min.js"></script>
<!-- element-ui -->
<script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.13/index.js"></script>
<!-- echarts -->
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.1/echarts.common.js"></script>
<!-- ore-js 是 babel-polyfill 的底层依赖,通过各种奇技淫巧,用 ES3 实现了大部分的 ES2017 原生标准库,同时还要严格遵循规范。 -->
<script src="https://cdn.bootcdn.net/ajax/libs/core-js/3.28.0/minified.js"></script>
<!-- 持久化 -->
<script src="https://cdn.bootcdn.net/ajax/libs/vuex-persistedstate/4.1.0/vuex-persistedstate.es.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/vuex/4.1.0/vuex.cjs.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/Base64/1.2.0/base64.js"></script>

vue.config.js中进行配置,打包时不要打包这个CDN引入的文件
configureWebpack: config => {
    config.externals = {
      vue: "Vue",
      "vue-router": "VueRouter",
      axios: "axios",
      // 属性带-杠 就用引号否则不用
      "element-ui": "element-ui",
      echarts: "echarts",
      "core-js": "core-js",
      "vuex-persistedstate": "vuex-persistedstate",
      vuex: "vuex",
      Base64: "Base64"
    }
  }

image.png

4. gzip压缩,有两种方式.

  • 让服务器压缩:当浏览器发送请求时,服务器进行实时压缩,返回浏览器
  • webpack打包时,进行压缩,浏览器请求时,服务端进行一些配置,返回压缩文件
下载指令CMD
npm i compression-webpack-plugin -D
vue.config.js中进行配置
 chainWebpack: config => {
    const CompressionWebpackPlugin = require('compression-webpack-plugin')
    if (process.env.NODE_ENV === 'production') {
      config.plugin('CompressionPlugin').use(
        new CompressionWebpackPlugin({
          test: /\.(js|css)$/,
          threshold: 10240, // 超过10kb的文件就压缩
          deleteOriginalAssets: true, // 不删除源文件
          minRatio: 0.8
        })
      )
    }
  }

image.png

打包时dist/js中会有gz压缩文件,说明压缩成功。

image.png

5. 打包不生成map文件

map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。

那么在项目打包时我们是可以设置不生成map文件的,因为map文件会使得我们的打包文件大很多

不生成map文件配置如下

module.exports = {
  productionSourceMap: false,
}

6. 可视化分析包大小

这是一个插件工具,能够看到自己的项目大小,并且通过视图的形式展示出来,这样就可以更加明确自己要优化哪一块的项目文件。

下载指令CMD
npm install webpack-bundle-analyzer -D
vue.config.js中进行配置
 chainWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      config.plugin('webpack-bundle-analyzer')
        .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
        .end()
    }
    const CompressionWebpackPlugin = require('compression-webpack-plugin')
    if (process.env.NODE_ENV === 'production') {
      config.plugin('CompressionPlugin').use(
        new CompressionWebpackPlugin({
          test: /\.(js|css)$/,
          threshold: 10240, // 超过10kb的文件就压缩
          deleteOriginalAssets: true, // 不删除源文件
          minRatio: 0.8
        })
      )
    }
  }

image.png

运行指令

npm run build --report

image.png

优化前dist文件16.6mb

优化后dist文件1.23mb

image.png

Vue项目打包优化完成

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Vue项目打包速度优化,可以尝试以下几种方法: 1. 使用CDN:将一些常用的第三方库(如VueVuex、Vue Router等)从本地打包中移除,改为通过CDN引入。这样可以减少打包体积和加快打包速度。 2. 按需引入组件:在使用UI组件库时,可以考虑按需引入组件,而不是全部引入。这可以通过babel-plugin-component等工具来实现,减少不必要的打包和编译时间。 3. 代码拆分:将大型的代码块拆分成更小的模块,利用Webpack的代码分割功能(如异步加载、按需加载)来实现懒加载。这样可以减少初始加载时间,提升用户体验。 4. 优化图片:对于项目中的图片资源,可以使用压缩工具来减小图片大小,如使用imagemin-webpack-plugin等插件进行图片压缩。 5. 缓存和持久化:合理利用浏览器缓存和服务端缓存,减少不必要的请求和加载时间。另外,可以考虑使用localStorage或IndexedDB等技术进行数据持久化,减少数据加载时间。 6. 使用Tree Shaking:通过配置Webpack的tree shaking功能,可以剔除项目中未使用的代码,减少打包体积和提升加载速度。 7. 配置合理的Webpack:根据项目需求,合理配置Webpack的各项参数,如使用cache-loader、thread-loader等插件来提升构建速度。 需要注意的是,优化策略要根据具体项目情况进行选择,不同的项目可能有不同的瓶颈和优化空间。可以通过Webpack Bundle Analyzer等工具来分析打包结果,找出优化的重点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李合胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值