vue打包性能优化核心方案

打包不生成map文件

我们通常项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。打包生成的map文件的作用就在于,map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错。

我们可以设置不生成map文件,从而减少包的体积

module.exports = {
  productionSourceMap: false,
}

通过在vue.config.js将 productionSourceMap 参数设置为false即可

 

使用gzip压缩

gzip是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多,需要nginx也启用gzip

安装依赖(适用于vue-cli3,vue2自寻)
npm i --save-dev compression-webpack-plugin@5.0.1
对vue.config.js进行配置打包 使用gzip压缩
// 引入依赖
const CompressionWebpackPlugin = require('compression-webpack-plugin');
// 定义压缩文件类型
const productionGzipExtensions = ['js', 'css'];

module.exports = {
  ...
  configureWebpack: {
    plugins: [
      new CompressionWebpackPlugin({
        filename: '[path].gz[query]',
        algorithm: 'gzip',
        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), // 匹配文件名

        threshold: 10240, // 对超过10K的数据进行压缩

        minRatio: 0.8, // 极小比
      }),
    ]
  },
}

运行npm run build后出现gz结尾的文件就成功了

 

移除预加载

众所周知,如果你的项目比较大,vue的默认预加载机制,首屏加载真的巨慢,很多人开发,初始化的时候会预加载几百个js。但是比如跳转到我的页面很多预加载的js根本没有必要加载。

这个时候我们可以关闭预加载

chainWebpack: (config) => {
  // 移除预加载
  config.plugins.delete('prefetch')
}

 

忽略调试代码

忽略调试代码,使用UglifyJsPlugin去掉console 可以略微降低文件大小:

config.plugins.push(
  // 使用UglifyJsPlugin去掉console 可以略微降低文件大小
  new UglifyJsPlugin({
    uglifyOptions: {
      compress: { drop_console: true, drop_debugger: true },
    },
  })
);

 

其他

除此之外还有我们常用到的一些方案,也可以大幅度优化网站性能

  • 懒加载(路由懒加载、图片懒加载、列表懒加载)
  • 插件按需加载、按需引入
  • 异步请求
  • 合理使用http缓存,浏览器缓存,减少http请求
  • 图片优化(缩略图、精灵图、svg、小图片base64处理)
  • 使用CDN

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容