vue打包之后文件过大,首开进度缓慢

vue打包之后文件过大, 首次打开进度缓慢

发布一篇文章用来解决vue打包之后文件过大的问题

分析( 如果 着急解决问题, 请忽略此小点)

可安装 webpack-bundle-analyzer 插件分析压缩之后的具体每个js的大小及其来源

众所周知, vue 压缩只有的文件大小, 取决于 安装的插件多不多, 我们自己写的代码其实不是太多, 所以优化重点在于插件的体积

webpack-bundle-analyzer 官网地址为: https://www.npmjs.com/package/webpack-bundle-analyzer

webpack-bundle-analyzer 安装


npm install --save-dev webpack-bundle-analyzer

yarn add -D webpack-bundle-analyzer

webpack-bundle-analyzer 配置

vue.config.js
在这里插入图片描述
在这里插入图片描述

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

// configureWebpack 第一种写方法
configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      return {
        plugins :[
          new BundleAnalyzerPlugin()
        ]
      }
    }
  },
  
// configureWebpack 第二种写方法
configureWebpack:   {
    plugins :[
      new BundleAnalyzerPlugin()
    ]
  },

运行

yarn run build
// 如果不出意外, 浏览器会自动弹出打开一个窗口
// 如果出现意外打开网址
	// 打开 http://127.0.0.1:8888/
		//  http://localhost:8888/
		//  http://本机ip:8888/

结果
在这里插入图片描述

一, router 优化

写好的路由可以提供懒加载的效果, view展示哪里加载哪里很方便快捷.
还有一种特殊情况, menu 是由请求接口获得的, 此时就要慎重考虑 router 优化

在这里插入图片描述

	const index = (resolve) => require(['@/components/index/index'],resolve)

二, sdn优化

sdn优化说白了就是把vue引用的插件通过 public/index.html 中的 script 标签 的 src 引入 cdn 网站上的js

个人使用感觉效果很差, 主要原因是, cdn网站上一些大的 js 容易加载不出来, 如果客服喜欢重复刷新页面, 体验感很差.
网址: https://cdnjs.com/
在这里插入图片描述

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.2.5/polyfill.js"></script>

三, 去掉 map 文件

webpack之后是有大量map文件的, 生产环境需去掉, 打包的时候
在这里插入图片描述
module.exports = {
productionSourceMap: false,
}

四, gzip打包

个人格外推崇, webpack 的是 node_modules里面的东西, 引用插件太多内存满是理所当然的. 即使再打包, 也只是体积减小了, 里面东西依然没变, 只会一定的加快加载速度, 并不会大幅度增加


运行速度快上几秒几十秒, 也是勉强可以交差了, 毕竟留给我们更改的时间并不多.

安装 compression-webpack-plugin

/**
 * 我的环境       node v16.13.1          vue-cli 3         webpack 4.43.0
 * 我安装的 compression-webpack-plugin 版本为5.0.1
*/
// 语法
npm install compression-webpack-plugin@5.0.1
npm uninstall compression-webpack-plugin
yarn add compression-webpack-plugin@5.0.1
yarn remove compression-webpack-plugin

vue-cli3 中, 修改vue.config.js

const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = ['js', 'css'];

// 第一种写法
configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      // 生产环境取消 console.log
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
      return {
        plugins :[
          new CompressionWebpackPlugin({
            filename: '[path].gz[query]',
            algorithm: 'gzip',
            test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), // 匹配文件名
            threshold: 10240, // 对超过10K的数据进行压缩
            minRatio: 0.8, // 极小比
          }),
        ]
      }
    }
  },
// 第二种写法
configureWebpack:   {
    plugins :[
      new CompressionWebpackPlugin({
            filename: '[path].gz[query]',
            algorithm: 'gzip',
            test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), // 匹配文件名
            threshold: 10240, // 对超过10K的数据进行压缩
            minRatio: 0.8, // 极小比
          }),
    ]
  },

如果没有 vue.config.js 需新建的话

const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = ['js', 'css'];


module.exports = {
  productionSourceMap: false,
  configureWebpack: config => {
    // 生产环境取消 console.log
    if (process.env.NODE_ENV === 'production') {
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
      return {
        plugins :[
          new CompressionWebpackPlugin({
            filename: '[path].gz[query]',
            algorithm: 'gzip',
            test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), // 匹配文件名
    
            threshold: 10240, // 对超过10K的数据进行压缩
    
            minRatio: 0.8, // 极小比
          }),
          new BundleAnalyzerPlugin()
        ]
      }
    }
  },
}

特别注意: 如果安装的时候非常费力, 说明安装的是最新版, 需要在安装完成之后卸载重装固定版本, 用以上命令即可
如果期中出现任何问题, 大部分都为 web-cli , webpack 和 compression-webpack-plugin版本不兼容所致

五, 按需引入插件

在座的诸位, 挖坑的时候挖浅点
真的见过为了 element-ui 的 按钮 和 message 就把整个 element-ui 都引入的

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
打包Vue项目时,如果生成的libs文件过大,可以采取以下措施进行优化。 首先,可以使用webpack-bundle-analyzer工具来分析打包后的文件,找出哪些模块是占用空间较大的。可以通过安装和配置webpack-bundle-analyzer来实现这一步骤。 其次,可以考虑对路由进行优化。如果项目中有很多页面和路由,可以尝试按需加载路由,即在需要访问某个页面时再加载相应的路由模块,而不是一次性加载所有路由模块。这样可以减少打包后libs文件的大小。 另外,可以使用SDN(Software-Defined Networking)进行优化。SDN可以通过网络虚拟化和网络功能划分等方式来提高网络的灵活性和效率,从而减少数据传输的大小。 还可以去掉map文件。在生产环境下,map文件通常不需要,可以通过配置productionSourceMap为false来禁用map文件的生成。 最后,可以使用gzip来对打包后的文件进行压缩。可以安装compression-webpack-plugin插件来自动进行gzip打包,从而减小文件的体积。 以上是几种优化vue打包时libs文件过大的方法,可以根据具体情况选择适合项目的优化策略。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue打包之后文件过大,首开进度缓慢](https://blog.csdn.net/lxw_hk2_zy/article/details/123276044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值