Vue项目打包优化(提升项目打开速度)

  1. 可以把博客主题的相关资源放到了又拍云上,很大程度上减轻了服务器的流量压力来提升打开速度。
  2. 使用nginx自动解压缩来提升网站打开速度

Vue项目在开发环境中编写完毕,编译看看启动速度。

使用cmd输入vue ui打开ui界面,编译如图。

image-20220130152709690

发现需要9s,非常需要对其优化,记录一下优化过程,以后可以及时查阅。

1、productionSourceMap:false

修改vue.config.js中的配置

module.exports = {
   
  outputDir: `${
     srcFile}`, // 在npm run build时 生成文件的目录 type:string, default:'dist'
  productionSourceMap: false, // 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度
}

如果不加false,则在打包的过程中会出现map文件,该文件的主要主要作用是让我们打包后的文件像未加密的代码一样,可以准确的输出相关的错误信息。默认情况下productionSourceMap为true,在此情况下,项目打包过后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知代码具体哪里出错。

productionSourceMap: true(默认) productionSourceMap: false
image-20220130154615622 image-20220130155250824

结果:

image-20220130155513595

2、路由懒加载

官方文档

把组件按组分块

有时候我们想把某个路由下的所有组件都打包在同个异步块 (chunk) 中。只需要使用 命名 chunk (opens new window),一个特殊的注释语法来提供 chunk name (需要 Webpack > 2.4)。

const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

Webpack 会将任何一个异步模块与相同的块名称组合到相同的异步块中。

3、关闭Prefetch

官方文档

因为vuecli 3默认开启prefetch(预先加载模块),提前获取用户未来可能会访问的内容
在首屏会把这十几个路由文件,都一口气下载了。

**注意:**prefetch其实并不会影响首页的加载速度,只是优化子页面

使用场景:当对流量有限制时可以使用,比如移动端,只用查看首页或者其它并不是全部页面的时候,使用perfetch可能会导致流量的不必要损耗。

所以我们要关闭这个功能,在vue.config.js中设置

// vue.config.js
module.exports = {
   
  chainWebpack: config => {
   
    // 移除 prefetch 插件
    config.plugins.delete('prefetch')

    // 或者
    // 修改它的选项:
    config.plugin('prefetch').tap(options => {
   
      options[0].fileBlacklist = options[0].fileBlacklist || []
      options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/)
      return options
    })
  }
}

4、element-ui组件按需加载

打包过程中可以看到element-ui占用了881.3kB,所以需要对其进行按需引入。

image-20220130161552440

具体参考
易错点:项目是基于vue-cli 3.x的版本,并没有官网的.babelrc文件,只有babel.config.js文件,而且项目不需要引入完整的element-ui,只需要引入部分,按官网的步骤安装babel-plugin-component后在babel.config.js写入内容,报错

解决方法:
.babelrc文件和babel.config.js文件都是配置文件,可以视为相同,之后需要使用npm安装

npm i @babel/preset-env -D
而且,也不再使用es2015,改成@babel/preset-env,两者是相同的,其作用都是编译es6语法,因此在babel.config.js中写成

module.exports = {
   
  presets: [
    '@vue/cli-plugin-babel/preset',
    ["@babel/preset-env", 
  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于Vue项目打包速度优化,可以尝试以下几种方法: 1. 使用CDN:将一些常用的第三方库(如VueVuex、Vue Router等)从本地打包中移除,改为通过CDN引入。这样可以减少打包体积和加快打包速度。 2. 按需引入组件:在使用UI组件库时,可以考虑按需引入组件,而不是全部引入。这可以通过babel-plugin-component等工具来实现,减少不必要的打包和编译时间。 3. 代码拆分:将大型的代码块拆分成更小的模块,利用Webpack的代码分割功能(如异步加载、按需加载)来实现懒加载。这样可以减少初始加载时间,提升用户体验。 4. 优化图片:对于项目中的图片资源,可以使用压缩工具来减小图片大小,如使用imagemin-webpack-plugin等插件进行图片压缩。 5. 缓存和持久化:合理利用浏览器缓存和服务端缓存,减少不必要的请求和加载时间。另外,可以考虑使用localStorage或IndexedDB等技术进行数据持久化,减少数据加载时间。 6. 使用Tree Shaking:通过配置Webpack的tree shaking功能,可以剔除项目中未使用的代码,减少打包体积和提升加载速度。 7. 配置合理的Webpack:根据项目需求,合理配置Webpack的各项参数,如使用cache-loader、thread-loader等插件来提升构建速度。 需要注意的是,优化策略要根据具体项目情况进行选择,不同的项目可能有不同的瓶颈和优化空间。可以通过Webpack Bundle Analyzer等工具来分析打包结果,找出优化的重点。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值