Vue 打包 chunk-vendors.js 文件过大解决方案(compression-webpack-plugin)

本文主要是介绍Vue 打包 chunk-vendors.js 文件过大解决方案(compression-webpack-plugin),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 主篇 Vue 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案。

  • 附带:nvm 安装与使用 nodejs 版本管理

  • 根据主篇内容继续通过 compression-webpack-plugin 插件处理 chunk-vendors.js 文件过大的问题。

  • 创建 vue.config.js 文件,后续配置都需要用到配置文件。

  • 前端将文件打包成 .gz 文件,然后通过 nginx 的配置,让浏览器直接解析 .gz 文件,可以大大提升文件加载的速度,浏览器可以直接解析 .gz 文件并解压。

  • 压缩文件格式介绍

    • .gz:浏览器可以直接解析并解压。

    • .brBR 文件是使用 Brotli(一种开源数据压缩算法)压缩的文件,它包含网页资产,例如 CSSXMLSVGJS 文件,以 Brotli 压缩数据格式压缩。 Web 浏览器(例如 ChromeFirefox)使用 BR 文件来提高页面加载速度,Brotli 数据压缩格式旨在替代 Zopfli 压缩算法,该格式允许的压缩率比Zopfli 高大约 20%

    • .br 压缩需要基于 nodejs >=v10.16.0 版本才能生成,一般本地没问题,需要注意线上服务器会可能发生找不到 zlib 的情况并进行安装。

  • 安装插件

    • npm 安装

      // 安装报错的话看下面注释,用下面的版本进行安装
      $ npm install --save-dev compression-webpack-plugin// 由于安装最新版本会安装失败,报错 unable to resolve dependency tree
      // 所以需要找一个低版本的进行安装,如果不知道安装什么版本合适,就直接去 npm 官网找到这个组件,找到发布版本列表,一个一个的从新到旧安装,直到成功为止!
      // 上面的如果安装失败就先用这个版本,或者可以按照上句话所说的去尽量安装新的版本
      $ npm install --save-dev compression-webpack-plugin@6.1.1
      
    • yarn 安装(跟上面同理)

      $ yarn add compression-webpack-plugin --save-dev
      
  • 修改 vue.config.js,拷贝帖进去即可,然后 $ npm run build 进行打包测试 (jscss),会发现有了 .gz 文件,如果添加 .br 压缩支持,也会多了 .br 文件。

    • 如果报错 Error:Algorithm “brotliCompress“ is not found in “zlib“,是因为 nodejs 版本低了,需要升级、如果升级还是无法解决,可以暂且先注释 .br 的打包,因为主要还是 .gz 文件的压缩,.br 只是进一步优化,属于可选范围。

    • 如果在 $ npm run build 的时候报错 TypeError: Cannot read property ‘tapPromise’ of undefined,看这里进行解决,原因是当前脚手架不支持 compression-webpack-plugin 的版本,需要降低。

    const path = require('path');const webpack = require('webpack')
    const CompressionPlugin = require('compression-webpack-plugin')
    const zlib = require('zlib')
    const isProduction = process.env.NODE_ENV === 'production'module.exports = {configureWebpack: {resolve: {alias: {'@': path.resolve(__dirname, './src'),'@i': path.resolve(__dirname, './src/assets'),}},plugins: [new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),// 下面两项配置才是 compression-webpack-plugin 压缩配置// 压缩成 .gz 文件new CompressionPlugin({filename: '[path][base].gz',algorithm: 'gzip',test: /\.js$|\.css$|\.html$/,threshold: 10240,minRatio: 0.8}),// 压缩成 .br 文件,如果 zlib 报错无法解决,可以注释这段使用代码,一般本地没问题,需要注意线上服务器会可能发生找不到 zlib 的情况。new CompressionPlugin({filename: '[path][base].br',algorithm: 'brotliCompress',test: /\.(js|css|html|svg)$/,compressionOptions: {params: {[zlib.constants.BROTLI_PARAM_QUALITY]: 11}},threshold: 10240,minRatio: 0.8})]}
    }
    

    image.png

    image.png

  • Nginx 配置,找到当前 Vue 项目对应的 Server 追加下面 compression-webpack-plugin 相关配置,然后重启 Nginx

    下面的配置主要是开启服务器压缩功能,如果本地不压缩成 .gz 文件,服务器就需要压缩,但是这样会消耗服务器性能,所以上面前端通过插件打包时就压缩出来 .gz 文件,这样访问服务器就只需要读取下载即可,服务器不需要走一次压缩,减少服务器开销!

    server{listen 8088;server_name localhost;# compression-webpack-plugin 配置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 条件,支持正则,此处表示 ie6 及以下不启用 gzip(因为ie低版本不支持)gzip_disable "MSIE [1-6]\.";
    }
    
  • 按着上面配置完成之后,重新打包提交到服务器,然后进行访问即可。这是打包之后访问的情况!

    image.png

这篇关于Vue 打包 chunk-vendors.js 文件过大解决方案(compression-webpack-plugin)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/zz00008888/article/details/119893222
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/743229

相关文章

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放