前言
问题: vue 线上打开首页速度太慢,js文件太大,且全部走当前服务器获取 js/css 数据,服务器带宽也跟不上
处理方式: 把一些 js/ css 使用 cdn 的方式进行加载
优化后使用 cdn 地址加载,浏览器可以快速拉取到数据
优化效果 : 优化前 15-20 秒完成加载, 优化后 2秒内完成加载
1、main.js
1、配置排除依赖 2、配置cdn地址 3、关闭打包生成 map.js 文件
定义配置信息
const isProduction = process.env.NODE_ENV !== 'development';
const isNeedCdn = true
const assetsCDN = {
externals: {
'vue': 'Vue',
'axios': 'axios',
'element-ui': 'ELEMENT',
'vue-router': 'VueRouter',
'@smallwei/avue': 'AVUE',
},
css: [
'https:
'https:
],
js: [
'https:
'https:
'https:
'https:
'https:
]
}
加入配置 externals = 排除 cdn 信息注入到配置中
module.exports = defineConfig({
productionSourceMap: false,
configureWebpack: {
externals: (isProduction || isNeedCdn) ? assetsCDN.externals : {}
},
chainWebpack: config => {
if (isProduction || isNeedCdn) {
config.plugin('html').tap(args => {
args[0].cdn = assetsCDN
return args
})
}
},
});
2、public/index.html
读取 main.js 注入的配置
<!-- 使用CDN的CSS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
<% } %>
<!-- 使用CDN的JS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>
3、效果查看
1、首页会写入 css/js 文件
2、打包后的 js 文件大小会下降
前 后 关闭 生成map 以及 使用cdn 方式
|