位置: IT常识 - 正文

vite首次打开界面加载慢问题/解决

编辑:rootadmin
vite首次打开界面加载慢问题/解决 写在前面

推荐整理分享vite首次打开界面加载慢问题/解决,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

网上都说vite要比webpack快,但个人感受,默认情况下, vite项目的启动确实比webpack快,但如果某个界面是首次进入,且依赖比较多/比较复杂的话,那就会比较慢了。

这篇文章就是用来记录,关于vite慢的相关问题与可能的解决方案

为什么说vite快?为什么说vite慢?

只说vite快那太过笼统,但vite项目的启动确实是快(注意这里的启动是指命令行启动完毕,不是指启动完之后首页加载完毕)

启动完之后,你打开首页,你可能就不一定觉得vite快了(我之前就时常在自我怀疑,是不是我vite的打开方式不对,怎么这么慢????),如果依赖的资源比较多,那速度有时慢的感人

可以简单的认为,vite之所以启动快,是因为vite启动时并不会像webpack一样对所有代码进行编译/打包/压缩, 他只会对一小部分代码进行一些简单的处理,剩余的工作都交给浏览器,以及运行时进行依赖分析,动态打包,动态引入

具体原因/原理可见:vite原理与实践记录

对vite慢的分析与尝试解决

vite启动快的原理,也导致了他在加载依赖项很多,很复杂的页面时,页面打开慢。因为他要进行一系列的动态分析/动态资源引入/动态编译。

vite慢的表现

vite的慢的时候,会有什么表现呢?

从web开发者工具的network选项卡中,会看到请求了很多资源终端(CMD)中也会显示, 类似这样的文字:[vite] new dependencies found: axios, updating...[vite] ✨ dependencies updated, reloading page...界面会被强制刷新一次vite首次打开界面加载慢问题/解决

表现如下图 如下两篇文章也是对vite慢的记录,以及一定的分析: vite首次启动加载慢 Vite 解决项目刷新慢问题

对于vite慢有没有解决办法?

慢的主要原因是vite需要动态的解析依赖,并打包,引入。其中打包又可能是慢中之慢。

可能的原因找到了,那就看vite官方有没有提及解决办法,还好官方文档中有提及这个,只是写的不详细:VITE官网:依赖优化选项

解决方案

总之就是通过添加类似如下的配置,让vite在启动之初就对某些资源进行预打包,尽量避免后续的动态打包,示例配置如下 vite.config.ts

{ optimizeDeps: { include: [ 'vue', 'map-factory', 'element-plus/es', 'element-plus/es/components/form/style/index', 'element-plus/es/components/radio-group/style/index', 'element-plus/es/components/radio/style/index', 'element-plus/es/components/checkbox/style/index', 'element-plus/es/components/checkbox-group/style/index', 'element-plus/es/components/switch/style/index', 'element-plus/es/components/time-picker/style/index', 'element-plus/es/components/date-picker/style/index', 'element-plus/es/components/col/style/index', 'element-plus/es/components/form-item/style/index', 'element-plus/es/components/alert/style/index', 'element-plus/es/components/breadcrumb/style/index', 'element-plus/es/components/select/style/index', 'element-plus/es/components/input/style/index', 'element-plus/es/components/breadcrumb-item/style/index', 'element-plus/es/components/tag/style/index', 'element-plus/es/components/pagination/style/index', 'element-plus/es/components/table/style/index', 'element-plus/es/components/table-column/style/index', 'element-plus/es/components/card/style/index', 'element-plus/es/components/row/style/index', 'element-plus/es/components/button/style/index', 'element-plus/es/components/menu/style/index', 'element-plus/es/components/sub-menu/style/index', 'element-plus/es/components/menu-item/style/index', 'element-plus/es/components/option/style/index', '@element-plus/icons-vue', 'pinia', 'axios', 'vue-request', 'vue-router', '@vueuse/core', ], }}

配置完之后,vite的启动也会和原来有点不同, 终端(CMD)中会多出Pre-bundling dependencies的信息

最终解决方案

上面的解决方案,确实可以解决vite慢的问题,但每个项目都要进行这么一通配置,还是比较繁琐的,还好有开发者,写了相应插件来避免人工写这一堆配置

NPM: vite-plugin-optimize-persist

插件使用

npm i -D vite-plugin-optimize-persist vite-plugin-package-config

vite.config.ts 中增加配置

// vite.config.tsimport OptimizationPersist from 'vite-plugin-optimize-persist'import PkgConfig from 'vite-plugin-package-config'export default { plugins: [ PkgConfig(), OptimizationPersist() ]}

注意: 首次加载的时候,依然会很慢,这个是正常现象,因为这个插件, 加快vite载入界面速度的原理, 也和上面说的一样,而第一次,这个插件也没法知道,哪些依赖需要预构建,他只是在vite动态引入资源的时候,将这些资源都记录下来,自动写入了package.json中,当再次启动项目的时候,插件会读取之前他写入在package.json中的数据,并告知vite,这样vite就能对这些资源进行预构建了,也就能加快进入界面的速度了,但相应的启动速度就会比原来稍微慢一点

package.json 看到这里你可能会想,vite第二次启动本来就有缓存,本来就快,那这个插件岂不是没有意义了?当然还是有意义的,如果在这之后,被人再拿到你的源代码,因为package.json中已经有了预构建配置了,所以,他的vite在第一次启动时,就能对资源进行预构建了,另外,如果你由于某些原因需要删除node_modules/.vite这个缓存目录, 由于有这个插件,你的这次首次启动也会快起来。

参考文章

vite首次启动加载慢 Vite 解决项目刷新慢问题 VITE官网:依赖优化选项 vite原理与实践记录 几个插件,让你的Vue代码 “学会” 自动按需引入

本文链接地址:https://www.jiuchutong.com/zhishi/280993.html 转载请保留说明!

上一篇:flashfxp.exe是什么进程 作用是什么 flashfxp进程查询(flash是什么文件)

下一篇:PDF.js 前端开发使用指南(pdf.js原理)

  • js set集合(java中set集合的用法)

    js set集合(java中set集合的用法)

  • 天玑900怎么样(天玑900怎么样和骁龙695)

    天玑900怎么样(天玑900怎么样和骁龙695)

  • dnf巫女加点攻略(dnf巫女加点)(dnf2021巫女加点)

    dnf巫女加点攻略(dnf巫女加点)(dnf2021巫女加点)

  • 抖音怎么转发朋友圈(抖音怎么转发朋友圈视频)

    抖音怎么转发朋友圈(抖音怎么转发朋友圈视频)

  • cdn节点是什么意思(cdn节点系统关键组件有哪些)

    cdn节点是什么意思(cdn节点系统关键组件有哪些)

  • 华为nova7充电速度怎么样(华为nova7pro充电速度)

    华为nova7充电速度怎么样(华为nova7pro充电速度)

  • 快手别人送的卡怎么领取(快手别人送的卡怎么提现)

    快手别人送的卡怎么领取(快手别人送的卡怎么提现)

  • airpods有黑色的吗(airpods里面黑黑的是啥)

    airpods有黑色的吗(airpods里面黑黑的是啥)

  • 阿里dns多少(阿里dns是多少啊)

    阿里dns多少(阿里dns是多少啊)

  • 钉钉手机直播可以共享屏幕吗(钉钉手机直播可以连麦吗)

    钉钉手机直播可以共享屏幕吗(钉钉手机直播可以连麦吗)

  • word右对齐怎么设置(word右对齐怎么对不了最右边)

    word右对齐怎么设置(word右对齐怎么对不了最右边)

  • 美版苹果11和国行有什么区别(美版苹果11和国版苹果12的卡槽可以换的吗)

    美版苹果11和国行有什么区别(美版苹果11和国版苹果12的卡槽可以换的吗)

  • esp是文字文档后缀吗(文件esp是什么意思)

    esp是文字文档后缀吗(文件esp是什么意思)

  • 微信步数和手机步数不一致怎么回事(微信步数和手机步数不一致怎么办)

    微信步数和手机步数不一致怎么回事(微信步数和手机步数不一致怎么办)

  • 华硕5v电压过高怎么修(华硕5v电压红)

    华硕5v电压过高怎么修(华硕5v电压红)

  • 无法完成更新(为什么电脑无法完成更新)

    无法完成更新(为什么电脑无法完成更新)

  • 手机qq被冻结了怎么登录(手机qq被冻结了如何解冻)

    手机qq被冻结了怎么登录(手机qq被冻结了如何解冻)

  • 如何在群里集体视频(如何在群里集体语音)

    如何在群里集体视频(如何在群里集体语音)

  • 华为屏幕锁在哪里设置(华为屏幕锁在哪里关闭)

    华为屏幕锁在哪里设置(华为屏幕锁在哪里关闭)

  • 传输中断是什么意思(传输文件中断会不会损坏文件)

    传输中断是什么意思(传输文件中断会不会损坏文件)

  • ipad能外接鼠标吗(ipad能外接鼠标键盘吗)

    ipad能外接鼠标吗(ipad能外接鼠标键盘吗)

  • 二手手机bs机是什么意思(bs机和二手机)

    二手手机bs机是什么意思(bs机和二手机)

  • qq3g在线是什么意思(qq3g在线是怎么回事)

    qq3g在线是什么意思(qq3g在线是怎么回事)

  • 手机ip地址是什么意思(手机ip地址指的是什么意思)

    手机ip地址是什么意思(手机ip地址指的是什么意思)

  • 快手怎么自动播放下一个(快手怎么自动播放下一首)

    快手怎么自动播放下一个(快手怎么自动播放下一首)

  • 为什么手机页面上会出现HD(为什么手机页面频繁出来小广告?)

    为什么手机页面上会出现HD(为什么手机页面频繁出来小广告?)

  • 手机欠费被移动收回怎么办(手机欠费移动宽带会停吗)

    手机欠费被移动收回怎么办(手机欠费移动宽带会停吗)

  • dedecms5.7如何调用指定keyword或指定的id的文档(dedecms插件)

    dedecms5.7如何调用指定keyword或指定的id的文档(dedecms插件)

  • 进项税额转出会影响利润吗
  • 购买财务软件的会计分录怎么做
  • 取得的高速公路发票可以抵扣吗
  • 按份共同保证和连带共同保证
  • 增值税申报表中应税货物销售额
  • 制造费用影响当期损益的科目
  • 附加税退回分录
  • 2021年旅游免费
  • 个人账户作为公司私账
  • 当期发生的费用
  • 企业给员工发放最低生活保障
  • 利润表要怎么看
  • 股票收入要交所得税吗
  • 施工单位企业税率是多少
  • 三类小规模纳税标准
  • 如何确定合并报表的范围简答题
  • 哪些项目可以不报建
  • 公积金是交当月还是上月
  • 生产企业低值高报骗税
  • 本期就地缴纳的税额跟本期已缴税额
  • 出口企业预申报没有增值税专用发票稽核信息如何处理?
  • 初始投资成本与可辨认净资产公允价值
  • 出纳人员发现假章怎么办
  • win10怎么手动修改时间
  • 企业原材料成本有哪些
  • 消耗性生物资产如何结转成本
  • 什么是BIOS设置界面
  • 进项发票失控怎么办
  • php的递归
  • yii2框架运行原理
  • 怎么处理坏账准备的问题
  • 企业出售使用过的固定资产的增值税处理
  • 商业企业退货与退款区别
  • libpcap python
  • 在建工程预付款超过审计价怎么办
  • 待摊费用新准则解读
  • 网上学电脑
  • ps高反差保留怎么弄
  • sqlcode错误码100
  • 银行询证函快递费计入什么科目
  • 职工教育经费中的员工讲课费要发票吗
  • 单位上社保需要个人提供什么资料
  • 政府税收返还计入什么科目
  • 红字发票与作废发票验旧
  • 资产总额是营业收入吗
  • 小企业会计准则适用范围
  • 税控盘是什么会计科目
  • 一般纳税人开普票和专票有什么区别
  • 政府补助属于营业外收入吗
  • 行政事业单位过节费发放规定
  • 职工薪酬纳税调整明细表税收金额
  • 技术开发技术服务属于什么行业
  • 锅炉设备销售
  • 办公用品的发票可以抵扣吗
  • 电子产品多少金额要交税
  • mysql source 慢
  • Mysql主库死锁了导致从库停止复制
  • 电脑开机怎么设置默认系统
  • win8.1官方
  • windows2008 2016
  • win8摄像头权限怎么设置
  • 电脑主板故障分析与判断
  • windows8主题桌面
  • win10怎么关闭欢迎界面
  • win8怎么设置桌面背景
  • 查看syslog
  • linux-swap
  • perl入门
  • supervisor producer
  • windows7打开命令提示符
  • python中的类怎么理解
  • javascript编程语言
  • python将结果写入excel
  • javascriptz
  • node.js 配置
  • shell 捕获输出结果
  • 使用权资产
  • 广东电子税务局手机版
  • 国税实名制信息采集
  • 呼伦贝尔清欠办电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设