三种方法,合力解决vue首屏加载慢,打包后的vendor.js文件过大问题

有时候我们将vue项目打包后运行后,访问首页时发现:需要等待十几秒甚至几十秒的时间才能看到页面,通过F12发现,vendor.js高达几MB,加载时间很长,这给我们造成了极大的困扰,用户体验太差了吧!

下面我就来为大家介绍一下,有效的解决方法:

1. CDN方式引入各种包

下面我就以vuevuexvue-routeraxioselement-uiecharts为例,为大家详细示范如何通过CDN引入这些包

第一步:在index.html文件中用CDN方式引入所需的包,如下图所示:

(这里推荐大家两个常用的、比较稳定的CDN网站: https://www.bootcdn.cn、 https://www.jsdelivr.com)

index.html
在这里插入图片描述
附上link代码:

  <!-- 引入样式 -->
  <link href="https://cdn.bootcss.com/element-ui/2.8.2/theme-chalk/index.css" rel="stylesheet">

附上script 代码:

  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/element-ui/2.8.2/index.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
  <script src="https://cdn.bootcss.com/axios/0.17.0/axios.min.js"></script>
  <script src="https://cdn.bootcss.com/echarts/4.4.0-rc.1/echarts.min.js"></script>
  <script src="https://cdn.bootcss.com/echarts/4.4.0-rc.1/echarts.common.min.js"></script>

第二步:把通过CDN方式引入的包,注释掉import引入

这里有个坑,需要注意一下:
除了Vue.use(Element)需要注释以外( 如果加上这句话,还是会打包element-ui到vendor.js文件中),Vue.prototype.axios = axiosVue.use(VueRoter)Vue.use(vuex)等依然要使用。

main.js
在这里插入图片描述
router/index.js

这里要注意一下,Vue.use(VueRouter)中的VueRouter不能改为其他字段,否则会报错
这里我本来引入的时候命名为Router,注释掉后就将Vue.use(Router)改为了Vue.use(VueRouter)

在这里插入图片描述
store/index.js
在这里插入图片描述
utils/httpRequest.js
所有通过import引入的地方都注释掉

按上图所示方法,注释掉其他import引入的地方即可

第三步:在webpack中设置打包忽略vue/vuex/vue-router等包

webpack.base.conf.js

externals对象中输入的属性,表示这些包是通过外部引入的,不需要将它们打包到vendor.js

在这里插入图片描述
附上代码:

  // 引入外部库, 无需webpack打包处理
  externals: {
    'vue' : 'Vue',
    'vue-router':'VueRouter',
    'vuex':'Vuex',
    'axios':'axios',
    'element-ui':'ElementUI',
    'mockjs': 'Mock',
    'echarts': 'echarts',
    'ueditor': 'UE'
  }

第四步:打包

至此我们就完成了CDN引入包的方式,现在赶紧打包一下看看效果吧

2. 路由懒加载的方式加载路由

在这里插入图片描述

3. webpack启用gzip压缩

我们一般会在构建时压缩
webpack的compression-webpack-plugin插件用于支持构建项目时压缩文件,具体配置如下:

第一步:首先安装插件

npm install --save-dev compression-webpack-plugin

第二步:在config/index.js文件中打开Gzip开关,配置需要压缩的文件扩展名

config/index.js
(webpack相关)
在这里插入图片描述

第三步:webpack.prod.conf.js中设置具体压缩配置项

webpack.prod.conf.js
在这里插入图片描述
附上代码:
(这里其实会自动生成)

if (config.build.productionGzip) {
  const CompressionWebpackPlugin = require('compression-webpack-plugin')

  webpackConfig.plugins.push(
    new CompressionWebpackPlugin({
      asset: '[path].gz[query]',
      algorithm: 'gzip',
      test: new RegExp(
        '\\.(' +
        config.build.productionGzipExtensions.join('|') +
        ')$'
      ),
      threshold: 10240,
      minRatio: 0.8
    })
  )
}

打包后会同时保留原文件和压缩后的文件,接下的事情就交给后端了,让他们服务端nginx启动gzip_static

更加详细的关于webpack配置Gzip的教程可以参考这篇文章 https://www.cnblogs.com/zs-note/p/9556390.html

总结

以上就是我为大家整理的可以有效解决由打包后的vendor.js文件过大问题引起的vue首屏加载慢的方法,如果有什么不足或者错误的地方,还请指教,及时修改,谢谢大家。

wackyjin
关注 关注
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于vue-cli npm run build之后vendor.js文件过大解决方法
10-17
今天小编就为大家分享一篇基于vue-cli npm run build之后vendor.js文件过大解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
使用vue打包vendor文件过大或者是app.js文件很大的问题
10-18
主要介绍了使用vue打包vendor文件过大或者是app.js文件很大问题解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
完美解决 vue webpack 单页面 加载 gzip 访问 vendor.js 打包文件过大问题
qq_19767623的博客
10-19 8832
步骤一 vue-cli开启打包压缩 和后台配合 gzip访问 1.首先打开 config/index.js ,找到 build 对象中的 productionGzip ,改成 true 2. 打开 productionGzip: true 之前,先要安装依赖 compression-webpack-plugin ,官方推荐的命令是: npm install --save-dev compres...
uni-app 解决打包微信小程序vendor.js过大
最新发布
weixin_51070343的博客
05-14 507
希望这篇博客能帮助到正在使用uni-app开发微信小程序并遇到相似问题的开发者。如果你有任何问题或者更好的解决方案,欢迎在评论区交流分享!
vue项目如何优化加载速度,项目打包文件过大怎么办?_vue启动项目文件
2401_84447233的博客
04-27 418
前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。它会生成一个分析图,你的文件里包含了哪些文件打包后,它会自动在浏览器中打开。以 Vue 为例,我整理了如下的面试题。
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
热门推荐
在这里,我分享我的技术心得、项目经验、实用的技术教程、深入的技术分析以及前端开发的最新动态,希望能帮助到更多的人。
01-22 2万+
使用uniapp开发微信小程序时主包太大和vendor.js过大无法打包问题 在uniapp开发小程序这一块,相信很多开发者都遇到过代码体积太大无法打包问题,这时候就要优化小程序包大小。下面分享一下我的解决思路。希望能给大家一些帮助吧。
记一次uniapp 打包发布到微信平台,vendor.js文件太大的优化历程
ALiMaMaYang的博客
01-05 2981
提示:大家用uniapp做项目的初期,一定首先考虑分包问题,要不然后期会麻烦死诶…好死不死,我接手了一个别的团队写的项目,他们在项目初期,并没有充分考虑分包的问题,而是在做的过程中,发现主包放不下了,才开始分包,然而这个时候,再开始分包,就麻烦多了。提示:以下是我改别人项目的历程,差点熬死给大家的建议和提示:1.大家用uniapp做项目的初期,一定首先考虑分包问题,要不然后期会麻烦死2.主包除了tab的这些类似必须的页面,其他统统放在分包3.在依赖第三方框架的时候,慎重选择,不要依赖体积太大的。
Vue 项目打包以后 vendor.js 体积太大,影响首次加载速度
LonewoIf的博客
02-20 1万+
Vue 项目中,引入到工程中的所有 js、css 文件,编译时都会被打包vendor.js,若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首开的体验。 解决方案:将引用的外部 js、css 文件剥离出来,不编译到 vendor.js 中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将 vendor.js、外部的 js加载下来,达到首次打开加速的目的。 推荐外...
Vue 打包vendor.js 体积太大,解决加载速度问题
S筱潇S四维Smile
09-12 6273
Vue 项目中,引入到工程中的所有 js、css 文件,编译时都会被打包vendor.js,若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首开的体验。 解决方案:将引用的外部 js、css 文件剥离出来,不编译到 vendor.js 中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将 vendor.js、外部的 js加载下来,达到首次打开加速的目的。 推荐外...
Vue解决首屏加载首屏优化秒开(亲测有效)
qq_41429765的博客
07-07 2535
vue.config.js文件中(1).使用chainWebpack配置的方式(1)首先在public/index.html文件中将Vue或UI相关的js包引入main.js文件中的修改,将引入的import引入vue这个去掉,然后直接使用Vue注册vant,这个vant也不需要引入,因为在步骤一里面已经引入了vant.js包router.js文件的修改,去掉引入Vue,不引入vue-router,直接注册VueRouteraxios.js文件的修改,不需要引入axios直接使用。
vue 项目首页加载速度优化以及解决首页白屏问题
郝峰vip的博客
12-14 1万+
Vue项目优化首页加载速度达到秒开以及解决首页白屏问题
解决vue打包vendor.js文件过大问题
10-16
主要介绍了解决vue打包vendor.js文件过大问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
vue性能优化方案,解决首页加载
T3165919332的博客
05-04 1654
首页加载速度非常,如果项目比较大,升值可能出现10s以上的等待。用户体验非常差,解决方式。
前端项目时因chunk-vendors过大导致首屏加载的优化
菜不是原罪
12-17 2942
https://blog.csdn.net/qq_31677507/article/details/102742196
Vue打包加载,访问时间太久,记录项目的整个优化过程
qq_38287682的博客
09-23 5912
通过对打包之后的文件大小进行分析,发现其中three.js,echarts等模块占用空间比较大,同时我对代码进行了排查,发现对这两个模块都是进行的全部引入,但是实际上很多东西都没有使用,于是我对这些模块进行删减,改为部分引入,从而减少包文件的大小,同时将一些没有使用的模块进行删除,从而优化整体包文件的大小。经过以上配置之后,你会发现打包之后的dist/js文件夹里面出现了一些.gz格式的文件,这个就是拆解压缩之后文件包,他们文件都比较小,之后我们还需要nginx的配置文件进行配置,配置代码如下。
前端项目时因chunk-vendors过大导致首屏加载Vue Build时chunk-vendors的优化方案...
zhangzhiping35的专栏
08-03 3268
1、compression-webpack-plugin插件打包.gz文件 安装插件 也可以指定版本我这里下载的是1.1.2版本的,试过更高的版本会有ES6语法的报错,因为我node使用的是v12,如果node版本更高可以尝试更高版本 npm install --save-dev compression-webpack-plugin npm install --save-dev co...
vue加载16秒优化到2秒】Vue3加载的性能优化,打包后页面静态资源chunk-vendors文件过大加载响应
赏樱看雪撸代码
12-12 1万+
vue构建后首页加载vue首页加载优化,vue3响应优化,vue页面加载优化,如何解决chunk-vendors.js文件加载,如何优化vue加载,如何减少vue打包文件大小.
dom vue 加载完 执行_浅谈Vue.js 关于页面加载完成后执行一个方法问题
06-02
Vue.js 中,可以使用 `mounted` 钩子函数来执行页面加载完成后需要执行的方法。`mounted` 钩子函数会在组件挂载到 DOM 上后立即执行。 例如,我们定义了一个 `MyComponent` 组件,需要在页面加载完成后执行 `init` 方法,可以在组件定义中添加如下代码: ```javascript Vue.component('MyComponent', { mounted: function () { this.init() }, methods: { init: function () { // to do something } } }) ``` 这样,在 `MyComponent` 组件挂载到 DOM 上后,就会执行 `init` 方法

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 三种方法,合力解决vue首屏加载慢,打包后的vendor.js文件过大问题 7537
  • 从零开始,详细讲解根据用户权限不同,动态生成路由导航菜单功能的实现(一) 3589
  • input中blur失去焦点事件与点击事件冲突的解决方法 1961
  • elementUI 树形表格 懒加载 提示堆栈溢出解决/点击单个展开结果全部展开且数据串行问题 1674
  • 如何直接获取绝大部分网站的顶部title栏图标、logo(非js获取) 1382

最新评论

  • 从零开始,详细讲解根据用户权限不同,动态生成路由导航菜单功能的实现(二)

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8016362, 请多输出高质量博客, 帮助更多的人

  • 从零开始,详细讲解根据用户权限不同,动态生成路由导航菜单功能的实现(一)

    败絮1: 作者大大,为什么每次访问的时候,都会去访问/home,还有怎么放行某些页面不用登录呢

  • 三种方法,合力解决vue首屏加载慢,打包后的vendor.js文件过大问题

    花荣白起: 我觉得这个可以https://www.xyclsn.cn/article/detail/109

  • 如何直接获取绝大部分网站的顶部title栏图标、logo(非js获取)

    星夜温蓝: 表情包都有点忘了什么需求了

  • 三种方法,合力解决vue首屏加载慢,打包后的vendor.js文件过大问题

    儒雅的烤地瓜: 表情包没这样优化过,这样真的规范吗?

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 利用Promise封装原生小程序wx.request
  • Error: Cannot find module ‘webpack-cli/bin/config-yargs‘——webpack-dev-server版本不兼容
  • JS获取当前页面的URL信息(获取页面url参数)
2022年1篇
2021年1篇
2020年7篇
2019年3篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司坂田关键词排名包年推广福田SEO按天计费福田网站制作吉祥seo排名福田网站设计龙华百姓网标王推广南山百度网站优化松岗优秀网站设计塘坑百度关键词包年推广大鹏关键词排名包年推广沙井营销型网站建设坑梓建设网站南联网站优化龙岗网站推广方案东莞网站优化按天收费东莞百度seo光明网站推广工具石岩企业网站制作南澳模板制作木棉湾百姓网标王布吉网站优化软件吉祥网络营销光明建设网站塘坑模板制作布吉SEO按效果付费南联网站设计光明seo南澳网站优化按天计费大运设计公司网站大运关键词排名包年推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化