普歌- Vue-cli3|4 打包build优化(vue.config.js+nginx+gzip)已实战测试chunk大小小了3倍

本文主要是介绍普歌- Vue-cli3|4 打包build优化(vue.config.js+nginx+gzip)已实战测试chunk大小小了3倍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

哈哈哈。好久没更新了,因为参加了工作和校招面试,还有一部分是自己学习。大部分笔记都写在印象笔记上了,后续会持续分享哈。
在这里插入图片描述

分入口文件

  • 因为我们打包时需要不同的main配置文件。方便进行打包
    需要在根目录下创建两个main文件。
    main分文件
  • 在vue.config.js中写入webpack语法或者vue.config提供的语法。识别环境变量(我环境变量是通过cross-env进行控制)
module.exports = {chainWebpack: config => {config.when(process.env.NODE_ENV === 'development', config => {// entry找到默认的打包入口,调用clear则是删除默认的打包入口config.entryPoints.clear()config.entry('puge-dev')// add添加新的打包入口.add('./src/main-dev.js')})// 生产环境config.when(process.env.NODE_ENV === 'production', config => {config.entryPoints.clear()config.entry('puge-prod').add('./src/main-prod.js')})},
}

生产环境production启用cdn(我这里用的是免费的bootcdn)

  • HtmlWebpackPlugin启用cdn,会忽略打包一堆依赖包。使得chunk包会小很多,忽略打包的依赖包用别人的cdn链接引入.
  • 想看前后chunk包对比。可以下载webpack-bundle-analyzer 分析包
  • 代码如下(vue.config.js)。注释已经写好了。有问题私信俺
module.exports = {
/***  webpack链式写法* @param {*} config*/chainWebpack: config => {config.when(process.env.NODE_ENV === 'development', config => {// entry找到默认的打包入口,调用clear则是删除默认的打包入口config.entryPoints.clear()config.entry('puge-dev')// add添加新的打包入口.add('./src/main-dev.js')})// 生产环境config.when(process.env.NODE_ENV === 'production', config => {config.entryPoints.clear()config.entry('puge-prod').add('./src/main-prod.js')// 忽略打包一些模块// 左边是package里的包名。右边是在项目中你引入的名字config.externals({vue: 'Vue','vue-router': 'VueRouter',vuex: 'Vuex',axios: 'axios','js-cookie': 'Cookies','core-js': 'CoreJs','animate.css': 'animate.css'})// 修改 HtmlWebpackPlugin 插件参数,用cdns参数 植入 boot-cdn// 添加的css或者js链接的包版本一定要和package.json中一样config.plugin('html').tap((args) => {args[0].cdns = {css: [// animate.css'https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css'],js: [// vue  vue-router vuex'https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js','https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js','https://cdn.bootcdn.net/ajax/libs/vuex/3.2.0/vuex.min.js',// core-js'https://cdn.bootcdn.net/ajax/libs/core-js/3.6.5/minified.min.js',// axios'https://cdn.bootcdn.net/ajax/libs/axios/0.25.0/axios.min.js',// js-cookie'https://cdn.bootcdn.net/ajax/libs/js-cookie/3.0.1/js.cookie.min.js']}return args})})}

注意:生产环境中一些包需要在main-prod.js中的就不用引入了。比如antDvue、animate.css等等

更改public/index.html,用htmlWebpackPlugin引入cdns
<!DOCTYPE html>
<html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><!-- 引入htmlWebpackPlugin插件中cnds --><% if(htmlWebpackPlugin.options.cdns) {%><% for(var css of htmlWebpackPlugin.options.cdns.css) { %><link rel="stylesheet" href="<%=css%>" /><% } %><% } %>
</head><body><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.Please enable it to continue.</strong></noscript><div id="app"></div><!-- cdn script --><!-- 引入htmlWebpackPlugin插件中cnds --><% if(htmlWebpackPlugin.options.cdns) {%><% for(var js of htmlWebpackPlugin.options.cdns.js) { %><script src="<%=js%>"></script><% } %><% } %>
</body></html>

看看打包
打包

继续优化包大小,开启gzip压缩(webpack+nginx)

  • 单方面优化加载速度的方法:gzip压缩可以提高2-3倍的速度
前端vue项目中进行gzip相关的配置
  • 先下载一个webpack依赖
# 我们下载5.0.1版本
npm i -D compression-webpack-plugin@5.0.1
# 高版本语法已经改变,如果下载高版本打包时可能会出现一下错误

error描述
vue,config.js中配置

const CompressionPlugin = require('compression-webpack-plugin')
module.exports = { configureWebpack: () => {if (process.env.NODE_ENV === 'production') {return {plugins: [new CompressionPlugin({test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型threshold: 10240, // 归档需要进行压缩的文件大小最小值,我这个是10K以上的进行压缩deleteOriginalAssets: false // 是否删除原文件})]}}}
}
nginx方面也要配置gzip。不然浏览器中不生效
	# nginx开启gzip服务gzip on;gzip_disable "msie6";gzip_vary on;gzip_proxied any;gzip_comp_level 6;gzip_buffers 16 8k;gzip_http_version 1.1;# 需要开启gzip压缩的格式,如果发现需要的js/css/图片没开启gzip。可以在响应头里查看他的content-type类型是否在这配置了gzip_types text/plain application/javascript text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png image/jpg;

图示
查看传输文件类型
文件类型

  • 配置完成后,对项目进行 npm run build 打包之后,你可以在dist文件夹下看到相应的.gzip的文件,这就是进行压缩后生成的,这时我们在开发者工具中的network中查看我们的js或者其他文件的请求:
    开启前:
    开启前
    开启后:
    开启后

optimize完结。有问题私信or评论呐

更多推荐:wantLG的《普歌-vue项目中通过文件操作进行动态加载路由(router.js)》


  • 作者:wantLG
  • 本文源自:wantLG的《普歌- Vue-cli3|4 打包build优化(vue.config.js+nginx+gzip)已实战测试chunk大小小了3倍!!!》
  • 本文版权归作者和CSDN共有,欢迎转载,且在文章页面明显位置给出原文链接,未经作者同意必须保留此段声明,否则保留追究法律责任的权利。

这篇关于普歌- Vue-cli3|4 打包build优化(vue.config.js+nginx+gzip)已实战测试chunk大小小了3倍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/276818

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置