vue打包,首屏加载优化

vue打包后,通常首屏加载过慢vendor.js 过大这里我只介绍两种优化明细的方法

1.cdn 替换静态资源减少打包体积

  • 定义cnd 数组 (ps:数组要与剔除资源对应)
const cdn = {
	css: [
	"https://unpkg.zhimg.com/element-ui@2.13.2/lib/theme-chalk/index.css"
	],
	js: [
	"https://unpkg.zhimg.com/vue@2.6.10/dist/vue.min.js",
	"https://unpkg.zhimg.com/vuex@3.0.1/dist/vuex.min.js",
	"https://unpkg.zhimg.com/vue-router@3.0.3/dist/vue-router.min.js",
	"https://unpkg.zhimg.com/echarts@4.7.0/dist/echarts.min.js",
	"https://unpkg.zhimg.com/axios@0.19.2/dist/axios.min.js",
	"https://unpkg.zhimg.com/element-ui@2.13.2/lib/index.js"
	]
}
  • 选择需cnd替换的依赖不打进包内
configureWebpack: config => {
	if (process.env.NODE_ENV === "production") {
		// 用cdn方式引入
		config.externals = {
		"vue": "Vue",
		"vuex": "Vuex",
		"axios": "axios",
		"vue-router": "VueRouter",
		"echarts": "echarts",
		"element-ui":"element-ui"
		}
	}
}
  • 注入cdn
//vue.config.js 
chainWebpack: config => {
if (process.env.NODE_ENV === "production") {
config.plugin("html").tap(args => {
// 生产环境或本地需要cdn时,才注入cdn
args[0].cdn = cdn
return args
})
}
}
//index.html
//建议注入head
<!-- 使用CDNCSS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn &&
htmlWebpackPlugin.options.cdn.css) { %>
<link
href="<%= htmlWebpackPlugin.options.cdn.css[i] %>"
rel="stylesheet"
/>
<% } %>
//建议body底部
<!-- 使用CDNJS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn &&
htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>
<!-- 使用CDNJS文件 -->

2.gzip压缩 代码 (需配置服务端)

  • 安装 compression-webpack-plugin
   npm install --save-dev compression-webpack-plugin
  • 定义需压缩文件类型
configureWebpack: config => {
	if (process.env.NODE_ENV === "production") {
		const CompressionWebpackPlugin = require("compression-webpack-plugin")
		const productionGzipExtensions = ["html", "js", "css"]
		config.plugins.push(
		new CompressionWebpackPlugin({
			filename: "[path].gz[query]",
			algorithm: "gzip",
			test: new RegExp(
			"\.(" + productionGzipExtensions.join("|") + ")$"
			),
			threshold: 240, // 只有大小大于该值的资源会被处理 10240
			minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
			deleteOriginalAssets: false // 删除原文件
		})
		)
	}
}

配置服务端

server{
	gzip on;
	# 进行压缩的文件类型。
	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;
	# 是否在http header中添加Vary: Accept-Encoding,建议开启
	gzip_vary on;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狗_都不做前端

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

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

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

打赏作者

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

抵扣说明:

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

余额充值