Vue 项目打包优化

 

    这是项目未优化时的打包情况,可见压缩后代码的体积依旧庞大。

    默认情况下,通过import语法导入的第三方依赖包,最终会全部打包到一个js文件中,会导致单文件体积过大大,在网速底下时会阻塞网页加载,影响用户体验。

项目优化策略:

    1.使用CDN,减少包的体积。 将线上环境中用到的一些依赖,使用CDN网络节点的方式进行引用,而不是直接打包到包里。

      项目开发阶段和生产阶段不一样,我们在开发阶段还是要使用import导入依赖的方式来进行开发,在生产阶段再配置CDN外链来获取项目依赖。

     默认情况下,Vue项目的开发模式发布模式,共同使用一个打包的入口文件(src/main.js)为了将项目的开发过程与发布过程分离,我们可以分别使用两个入口文件,一个用于开发环境打包(这个就是main.js),一个用于生产环境打包

1.1  在项目根目录下新建 vue.config.js 文件,代码如下

1.2  配置prod_env.js  (发布模式打包入口文件)

    凡是通过CDN节点方式引用的包,在这里都注释掉并在public/index.html 中加入如下引用  如果注释掉出现错误可以不进行注释

1.3 在 vue.config.js 中添加配置 (把用到的js脚本放到 externals中。css不需要。 element-ui也不需要,为什么我也不知道,有知道的请告诉一声)

然后打包,可见体积以及比以前小很多了 

注:使用vue ui来打包项目一直报错,但你认为代码没问题的话,请直接使用 命令的方式 npm run build 打包!!!

 

    2.使用路由懒加载。

          当打包构建项目时,js包会变得非常大,影响页面加载,我们把不同路由的对应组件分割成不同的代码块,然后当路由被访问的时候加载对应的组件,这样能提升访问效率。

          切分之后,并不是浏览器访问某个路由,才去下载对应的模块,仍然在首次访问程序时,下载所有模块,只不过每个模块分的很小,加载首页时需要的模块能够更快的下载下来,所以能够更快的显示

具体分三步:

  2.1 安装包  npm install --save-dev @babel/plugin-syntax-dynamic-import

  2.2 在babel.config.js配置文件中加入插件

2.3 将路由改为按需加载的形式 ,示例如下

然后重新编译,就ok了!

    3.服务端压缩文件

      到了这一步,前端的可压缩空间以及不大了,追求极致的要在后端想办法。

3.1 开启node服务器采用compression 压缩文件 


const express = require('express')
const app = express()
 
app.use(express.static('./dist'))
app.listen(80, () => {
    console.log('Server is running at http://127.0.0.1:80')
})

然后安装 compression -> npm install compression 

const express = require('express')
const app = express()

let compression = require('compression')
app.use(compression())
app.use(express.static('./dist'))
app.listen(80, () => {
    console.log('http:127.0.0.1:80')
})

 运行,然后包的体积就又小了很多!

附加:但是,我们希望的是,部署的时候 index.html 中使用这些 CDN 节点的依赖,开发阶段,希望继续使用本地的包,如果我们不做修改的话,会引入两份重复的文件。不嫌麻烦可以手动注释

解决方案:这就需要在 index.html 中根据当前的打包环境是开发还是部署,动态的决定 index.html 是否使用引用

     

附加:移除代码中的console

    打包上线后的console语句没有任何作用,所以我们应该移除它,除去手动移除,还可以使用插件的方式来移除代码里的console语句。

    使用 babel-plugin-transform-remove-console 插件来移除代码console

    步骤 :

    1.安装 babel-plugin-transform-remove-console

npm install babel-plugin-transform-remove-console --save-dev

     2.配置  项目根目录下的  babel.config.js   (我使用的是vue-cli 3.0)

      由于单纯的引用  babel-plugin-transform-remove-console ,会造成无论是开发环境还是运行环境都会运行该插件,但是在开发中console对于我们是有用的,所以如下配置,只有在 production 生产环境下再移除console

    

 

指导老师 博客 https://blog.csdn.net/mynewdays

  • 14
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于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等工具来分析打包结果,找出优化的重点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值