位置: 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原理)

  • OPPO手机怎么图片搜索图片识别(OPPO手机怎么图标变大)

    OPPO手机怎么图片搜索图片识别(OPPO手机怎么图标变大)

  • 京东京品手机是什么意思(京品手机是什么)

    京东京品手机是什么意思(京品手机是什么)

  • win10用Office必须登录吗(windows的office要买吗)

    win10用Office必须登录吗(windows的office要买吗)

  • 咪咕怎么关闭连续包月(咪咕怎么关闭连播功能)

    咪咕怎么关闭连续包月(咪咕怎么关闭连播功能)

  • 钉钉退出登录后再重登录可以吗(钉钉退出登录后别人还能看到吗)

    钉钉退出登录后再重登录可以吗(钉钉退出登录后别人还能看到吗)

  • 没有商标怎么注册抖音小店(没有商标怎么注册视频号小店)

    没有商标怎么注册抖音小店(没有商标怎么注册视频号小店)

  • 华为桌面翻页设置方法(华为桌面翻页设置怎么弄)

    华为桌面翻页设置方法(华为桌面翻页设置怎么弄)

  • vivo1932a是什么机型(vivo1923a什么型号)

    vivo1932a是什么机型(vivo1923a什么型号)

  • 爱奇艺会员怎样给别人(爱奇艺会员怎样登录两个手机)

    爱奇艺会员怎样给别人(爱奇艺会员怎样登录两个手机)

  • 探探解除匹配对方还有聊天记录吗(探探解除匹配对方还能看到活跃时间吗)

    探探解除匹配对方还有聊天记录吗(探探解除匹配对方还能看到活跃时间吗)

  • vivo手机怎么看电池寿命(vivo手机怎么看激活时间)

    vivo手机怎么看电池寿命(vivo手机怎么看激活时间)

  • 苹果11pro max充电满了没及时拔会影响么(苹果11promax充电器原装图片)

    苹果11pro max充电满了没及时拔会影响么(苹果11promax充电器原装图片)

  • 恢复驱动器是干什么的(恢复驱动器是干什么的,为啥要用u盘)

    恢复驱动器是干什么的(恢复驱动器是干什么的,为啥要用u盘)

  • b612没保存怎么找回(b612没保存的视频还能找回吗)

    b612没保存怎么找回(b612没保存的视频还能找回吗)

  • voc指纹锁怎么进入管理模式(voc指纹锁怎么进入管理模式视频)

    voc指纹锁怎么进入管理模式(voc指纹锁怎么进入管理模式视频)

  • oppor17可以无线充电吗(oppor17手机支不支持无线充电)

    oppor17可以无线充电吗(oppor17手机支不支持无线充电)

  • 百度小程序如何添加到桌面(百度小程序如何开发)

    百度小程序如何添加到桌面(百度小程序如何开发)

  • 苹果Mac OS X 10.10 Yosemite系统十大使用技巧汇总(苹果mac os x 10.7.5)

    苹果Mac OS X 10.10 Yosemite系统十大使用技巧汇总(苹果mac os x 10.7.5)

  • 软件工程毕设题目大全 40个计算机毕业设计项目分享【含源码+论文】(软件工程毕设题目冷门)

    软件工程毕设题目大全 40个计算机毕业设计项目分享【含源码+论文】(软件工程毕设题目冷门)

  • 站在河马身上的锤头鹳,津巴布韦马纳潭国家公园 (© David Fettes/Getty Images)(河马是站在睡觉吗)

    站在河马身上的锤头鹳,津巴布韦马纳潭国家公园 (© David Fettes/Getty Images)(河马是站在睡觉吗)

  • 以房抵债的房子交房产税吗
  • 增值税一般纳税人证明文件
  • 计提企业所得税分录
  • 企业自产的产品转为自用
  • 采购无发票怎么处理
  • 医院都需要交什么税
  • 加计抵减进项税转出需要调减吗
  • 驾驶员行车补贴开什么发票
  • 公司月底做账大约几天
  • 医疗胶片扫描仪怎么用
  • 取得经营所得需要纳税人自行申报嘛
  • 建设用地规划许可证和建设工程规划许可证的区别
  • 公允价值变动损益属于当期损益吗
  • 管理费用 结转
  • 用现金购买的股票
  • 以资抵债是利空还是利好
  • 确认主营业务成本的依据是什么单据
  • 企业微信收款如何同步给别人
  • 展会门票费计入什么科目
  • 给工会开发票企业需要报税吗?
  • 五年之内,企业可追补应扣支出
  • 外地预缴的企业所得税可以退吗
  • 企业所得税可以弥补几年亏损
  • 基金公司收到投资者的投资款
  • 自然人独资企业和一人有限责任公司
  • 收到财政补贴收入贷记科目是
  • 增值税发票自查报告
  • 无偿赠送的原材料怎么处理
  • windows11怎么创建宽带拨号连接图标
  • 酒店没有营业执照开业犯法吗
  • 电脑到u盘
  • 贷款损失会计处理
  • pos机刷卡怎么做账务处理
  • 先开票后收款的发票怎么备注
  • php获取ftp文件目录
  • 注销税务时其他应付款的账务处理
  • 收入支出如何结转
  • 支付离退休人员退休金可以用现金结算吗
  • 交易性金融资产属于流动资产
  • 触屏不灵敏怎么调整oppo
  • 韦罗尼卡
  • 软件企业认定好处
  • mount.nfs an incorrect mount
  • 注册资本与注册资金、出资额的区别
  • 旅行发票可以做账吗
  • 金融机构贷款准备金
  • 发票 技术服务
  • 增值税小规模纳税人
  • 将织梦dedecms转换到wordpress
  • 欠对方钱对方公司已注销
  • Advanced SQL Injection with MySQL
  • 金蝶新建账套如何录入固定资产账套
  • 一般纳税人认定书是什么样子
  • 建筑行业旧项目怎么处理
  • 印花税每月未计提怎么办
  • 怎么才能回到一年前
  • 应收票据的计价应按
  • 哪些业务需要计提国别风险准备金
  • 企业利润率如何计算公式
  • 企业对私账户合法吗
  • 无形资产出资入股的会计处理
  • 营改增租赁服务有哪些
  • 工业企业的生产费用包括哪些
  • system表空间满了怎么处理
  • CMD命令操作MSSQL2005数据库(命令整理)
  • 配置是什么意思
  • mac最近使用的文稿打不开
  • excel自动关闭如何设置
  • unity3d documentation
  • bootstrap基础教程
  • Android studio配置环境
  • ssh连不上centos
  • 创建一个批处理文件,其功能是在当前
  • 备份多个数据库
  • js怎么获取复选框选中的值
  • jquery的循环
  • 小规模纳税人增值税优惠政策2024
  • 总包发票税率
  • A级纳税人和一般纳税人区别
  • 广州地税网上社保怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设