vue项目前端优化
不断学习提升自我,记录两个看到的vue项目打包优化方式,gzip和cdn。
查看资源树
webpack插件 cnpm i webpack-bundle-analyzer
vue.config.js配置
module.exports = {
chainWebpack: (config) => {
/* 添加分析工具 */
if (process.env.NODE_ENV === 'production') {
config
.plugin('webpack-bundle-analyzer')
.use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
.end()
config.plugins.delete('prefetch')
} else {
}
}
}
输入命令 npm run build --report
打开资源管理页面
1.productionSourceMap
将productionSourceMap设置为false,是否在构建生产包时生成 sourceMap 文件,false将提高构建速度
2.开启gzip打包
首先安装插件
cnpm i compression-webpack-plugin -D
在vue.config.js中配置
configureWebpack: (config) => {
if (isProduction) {
// 为生产环境修改配置...
config.mode = 'production'
return {
plugins: [new CompressionPlugin({
test: /\.js$|\.html$|\.css/, //匹配文件名
threshold: 10240, //对超过10k的数据进行压缩
deleteOriginalAssets: false //是否删除原文件
})]
}
}
}
开启gzip后同时也需要服务端支持才行
3.引入CDN加速
- 1.定义
const OPEN_CDN = true;是否启用cdn加速 - 2.找出不需要编译进文件的依赖库,以vue为例
//vue.config.js
// 是否线上模式
const isProduction = ['production', 'prod'].includes(process.env.NODE_ENV);
//是否开启cdn加速
const OPEN_CDN = true;
//配置不要编译的依赖库
configureWebpack: (config) => {
if (isProduction && OPEN_CDN) {
config.externals = {
'vue': 'Vue'
}
}
}
- 3.获取版本号
- 第一种方法通过
const vueV = require('vue/package.json').version获取最新的版本, - 第二种方法,通过package.json文件获取。
- 第一种方法通过
const packageVersion = require('./package.json');
const dependencies = packageVersion.dependencies;
const vueV = dependencies['vue'].slice(1);
- 4.引入cdn
const CDN = {
css: [],
js: [
`https://cdn.bootcss.com/vue/${vueV}/vue.min.js`,
]
};
chainWebpack: (config) => {
if (isProduction && OPEN_CDN) {
//设置cdn
config.plugin('html')
.tap(args => {
args[0].cdn = CDN;
return args;
})
}
}
- 5.在index.html中动态引入
<!-- 使用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 type="text/javascript" src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>
操作完之后便可以将一些比较大的依赖包转化为cdn引用了,如果出现404,请查看是否具有当前版本号的cdn。