Vue项目打包后体积优化

背景

这段时间使用Vue+Typescript完成了对公司用户管理系统的重构,替换掉了之前的JSF实现了准前后端分离。

目前还没有采取前端独立部署的模式,前端文件打包后需要放到tomcat中进行访问。

公司的服务器带宽100M,希望系统能支持500并发,且没有购买CDN服务。对于打包后的前端文件chunk-vendors.js就达到了900kb,急需优化。

解决
  • 路由懒加载

    参考文章:vue项目实现路由按需加载(路由懒加载)的3种方式@babel/plugin-syntax-dynamic-import

    1. 安装依赖:yarn add @babel/plugin-syntax-dynamic-import --dev

    2. 修改vue-router

      component: () => import( /* webpackChunkName: "login" */ '../views/Login.vue')
      

      vue-router

    3. babel添加配置:

      // babel.config.js
      presets: [
          '@vue/cli-plugin-babel/preset',
          ['@babel/preset-env', //添加 babel-preset-env 配置
            {
              'modules': false
            }
          ]
      ]
      plugins: [
          [
            'component',
            {
              'libraryName': 'element-ui',
              'styleLibraryName': 'theme-chalk'
            },
            'syntax-dynamic-import'
          ]
      ]
      
  • 资源按需加载(ElementUI按需引入)

    参考文章:element-ui官方文档

    1. 安装依赖:yarn add babel-plugin-component --dev
    2. babel添加配置:见上一步
    3. 在项目中按需引入ElementUI
      按需引入
  • 使用gzip

    参考文章:vue-cli 3.0 build包太大导致首屏过长的解决方案

    1. 安装依赖:yarn add compression-webpack-plugin

    2. webpack添加配置:

      // vue.config.js
      configureWebpack: () => {
         if (process.env.NODE_ENV === 'production') {
           return {
             plugins: [
               new CompressionPlugin({
                 test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型
                 threshold: 10240, // 归档需要进行压缩的文件大小最小值,我这个是10K以上的进行压缩
                 deleteOriginalAssets: false, // 是否删除原文件
                 minRatio: 0.8
               })
             ]
           }
         }
      }
      
    3. 若部署到tomcat,需配置server.xml:

      <Connector port="8080" protocol="HTTP/1.1"
                 compression="on"
                 compressionMinSize="1024"
                 compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/csv,application/javascript,application/json,application/xml"
      />
      
    4. 若独立部署,需配置ngnix:

      # gzip config
          gzip on;
          gzip_min_length 1k;
          gzip_comp_level 9;
          gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
          gzip_vary on;
          gzip_disable "MSIE [1-6]\.";
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值