1、代码层面的优化
2、项目打包的优化
const BundleAnalyzerPlugin = require(‘webpack-bundle-analyzer‘).BundleAnalyzerPlugin; module.exports = { configureWebpack: { plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery", _: "lodash" }), new BundleAnalyzerPlugin() ] } }
import(/* webpackChunkName: "home" */ ‘../views/Home.vue‘)
原因: Webpack默认开启了“prefetch”选项,即预载功能,可以在配置中关闭 prefetch空闲加载, prefetch会在页面加载完成后,利用空闲时间提前加载获取用户未来可能会访问的内容。 preload:用来指定页面加载后很快会被用到的资源,所以在页面加载的过程中,我们希望在浏览器开始主体渲染之前尽早 preload 关闭:vue.config.js文件中 module.exports = { chainWebpack: config => { config.module .rule(‘iview‘) .test(/iview.src.*?js$/) .use(‘babel‘) .loader(‘babel-loader‘) .end() Object.keys(pages).forEach(page => { config.plugins.delete(`preload-${page}`) config.plugins.delete(`prefetch-${page}`) }) } }
module.exports = { css : { extract :true //在生产环境下默认为true,在开发环境下默认是false } }
安装: cnpm i --save-dev @intervolga/optimize-cssnano-plugin 使用: const OptimizeCssnanoPlugin = require(‘@intervolga/optimize-cssnano-plugin‘); module.exports={ configureWebpack:config =>{ return { plugins:[ new OptimizeCssnanoPlugin({ sourceMap: false, cssnanoOptions: { preset: [ ‘default‘, { mergeLonghand: false, //合并属性 cssDeclarationSorter: false //根据css的属性名称进行排序 } ] }, }), ] } } }
开启optimization.minimize来压缩js代码
使用 module.exports={ configureWebpack:config =>{ return { optimization:{ minimize: true //在生产环境中默认为 true ,开启压缩js代码,在开发环境中默认为false } } } }
module.exports = { chainWebpack: config =>{ config.module .rule(‘images‘) .use(‘imageWebpackLoader‘) .loader(‘image-webpack-loader‘) }, }
3、项目部署的优化
在nginx/conf/nginx.conf中配置 http { gzip on; gzip_min_length 1k; gzip_comp_level 5; gzip_types application/javascript image/png image/gif image/jpeg text/css text/plain; gzip_buffers 4 4k; gzip_http_version 1.1; gzip_vary on; }
安装 npm/cnpm i compression-webpack-plugin --save-dev 使用 const CompressionPlugin = require("compression-webpack-plugin") module.exports = { configureWebpack: config => { //生产环境,开启js\css压缩 if (process.env.NODE_ENV === ‘production‘) { config.plugin(‘compressionPlugin‘).use(new CompressionPlugin({ test: /\.js$|.\css|.\less/, // 匹配文件名 threshold: 10240, // 对超过10k的数据压缩 deleteOriginalAssets: false // 不删除源文件 })) } } }
4、参考文档:
原文:https://www.cnblogs.com/wxh0929/p/14511204.html