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

  • 快手喜欢的作品怎么让人看到(快手喜欢的作品怎么公开)

    快手喜欢的作品怎么让人看到(快手喜欢的作品怎么公开)

  • 抖音放大镜在哪里找(抖音放大镜在哪里设置)

    抖音放大镜在哪里找(抖音放大镜在哪里设置)

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

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

  • word字体如何放大(word字体如何放到比初号还大)

    word字体如何放大(word字体如何放到比初号还大)

  • 微信不是群主怎么拉人进群(微信不是群主怎么艾特所有人)

    微信不是群主怎么拉人进群(微信不是群主怎么艾特所有人)

  • 怎么找微信的群聊(换手机了怎么找微信的群)

    怎么找微信的群聊(换手机了怎么找微信的群)

  • 电脑怎么操作多选图片(电脑怎么操作多屏幕显示)

    电脑怎么操作多选图片(电脑怎么操作多屏幕显示)

  • kindle不用的时候需要关闭屏幕吗(kindle不用的时候怎么放)

    kindle不用的时候需要关闭屏幕吗(kindle不用的时候怎么放)

  • 呼叫转移了能查详单吗(呼叫转移后能知道谁打过电话吗)

    呼叫转移了能查详单吗(呼叫转移后能知道谁打过电话吗)

  • 换手机号支付宝还能用原来的吗(换手机号支付宝借呗会影响吗)

    换手机号支付宝还能用原来的吗(换手机号支付宝借呗会影响吗)

  • 小米9内屏坏了保修吗(小米9内屏坏了多少钱)

    小米9内屏坏了保修吗(小米9内屏坏了多少钱)

  • 移动定制机怎么解除(移动定制机怎么用电信卡)

    移动定制机怎么解除(移动定制机怎么用电信卡)

  • iphone11香港上市时间(苹果手机11系列香港价格)

    iphone11香港上市时间(苹果手机11系列香港价格)

  • 抖音作品怎么设私密(抖音作品怎么设置不让别人看)

    抖音作品怎么设私密(抖音作品怎么设置不让别人看)

  • 苹果x怎么给照片上锁(苹果x怎么设置照片)

    苹果x怎么给照片上锁(苹果x怎么设置照片)

  • 荣耀手环哪个可以接电话(荣耀手环性价比)

    荣耀手环哪个可以接电话(荣耀手环性价比)

  • 怎么在电脑上剪辑音乐(怎么在电脑上剪辑)

    怎么在电脑上剪辑音乐(怎么在电脑上剪辑)

  • 网络虚拟电话怎么拦截(网络虚拟电话怎么打)

    网络虚拟电话怎么拦截(网络虚拟电话怎么打)

  • 手机语音有回音怎么办(手机语音有杂音滋滋咋回事)

    手机语音有回音怎么办(手机语音有杂音滋滋咋回事)

  • 闲鱼自提订单怎么处理(闲鱼自提订单怎么改收货地址)

    闲鱼自提订单怎么处理(闲鱼自提订单怎么改收货地址)

  • 抖音怎么进行商品分享(抖音怎么进行商品橱窗)

    抖音怎么进行商品分享(抖音怎么进行商品橱窗)

  • 手机新闻资讯怎么删除(手机新闻在哪里)

    手机新闻资讯怎么删除(手机新闻在哪里)

  • 华为p30如何设置铃声(华为p30如何设置24小时制)

    华为p30如何设置铃声(华为p30如何设置24小时制)

  • 抖音怎么投屏电视(抖音怎么投屏电视怎么设置vivo)

    抖音怎么投屏电视(抖音怎么投屏电视怎么设置vivo)

  • 为什么打开Win10应用商店会提示错误代码0x80070422?(为什么打开Win10虚拟器后一直在界面)

    为什么打开Win10应用商店会提示错误代码0x80070422?(为什么打开Win10虚拟器后一直在界面)

  • win10电脑记事本怎么换行(windows10记事本)

    win10电脑记事本怎么换行(windows10记事本)

  • 阿斯佩山谷中的蒙塔尼翁湖,法国 (© thieury/Adobe photo stock)(阿佩勒斯)

    阿斯佩山谷中的蒙塔尼翁湖,法国 (© thieury/Adobe photo stock)(阿佩勒斯)

  • 快速搞懂Pinia及数据持久化存储(详细教程)

    快速搞懂Pinia及数据持久化存储(详细教程)

  • 税盘是干什么用的
  • 我国的税种有哪些种类
  • 用人单位延迟给员工交社保怎么办
  • 内账采购含税怎么转不含税
  • 折扣折让红字发票怎么做账务处理
  • 连续亏损3年
  • 购买厨房用品属于什么费用
  • 本年利润是净利润还是利润总额
  • 净现值率和现值指数之间的关系
  • 上个月工资没有发
  • 新增土地和新增货值
  • 核定征收企业怎么申报
  • 房地产公司扣减土地出让金怎么入账?
  • 有留抵税额要考虑税负吗
  • 出口退税进项发票稽核
  • 建筑企业未开票收入增值税申报表怎么填写
  • 减免税款怎么入账
  • 材料销售的账务处理
  • 避税和不避税怎么选
  • 速动资产不包括存货和预付账款
  • 所有者权益合计是负数是什么意思
  • 个税手续费返还属于政府补助吗
  • 残保金通过什么科目核算
  • 建设工程招标办
  • 企业变更股东要交税吗
  • 公司有长期挂账的说法吗
  • 企业实际缴纳税款额账务怎么看
  • rnbrcache.exe是什么意思
  • 在代开发票时已经预缴个人所得税了,怎么处理?
  • 填报的资产总额在季初和季末存在差异是什么意思
  • vue的路由跳转了,可是页面没有变化
  • uniapp开发app视频教程
  • 织梦好用吗
  • 国税代开专票缴纳城建税分录
  • 帝国cms到底好不好
  • php实现上传图片功能
  • 顺丰快递电子运单打印模板
  • mysql好在哪里
  • 季度利润是负数怎么办
  • 开发支出与研发支出的区别
  • 什么时候库存商品在贷方
  • 汽车租赁行业税负是多少
  • 可供出售金融资产新准则叫什么
  • 如何做应收账款分析
  • 小规模企业缴纳公积金怎么做账
  • 有限合伙企业协议
  • 实收资本增减变化为负数的原因
  • 如何收信用卡付款
  • 劳务简易征收最新政策2020
  • 外贸企业的汇率怎么算
  • 主营业务成本包括工资吗
  • sql server字符串函数
  • 修改mysql用户权限
  • linux CentOS6.5 yum安装mysql5.6
  • 安装sql server需要注意什么
  • Qq浏览器怎么切换成极速模式
  • 怎么压缩视频
  • 安装solaris11
  • win8安装ie8
  • win8.1系统安装教程
  • win10怎么用键盘重启
  • ip地址xp系统
  • 安全账户管理器或本地安全机构服务器
  • w10升级失败怎么办
  • bootstrap模态窗口
  • 导入extjs、jquery 文件时$使用冲突问题解决方法
  • jquery跟随鼠标移动
  • cocos2djs
  • 创建表格在哪里找
  • 不需要背景
  • string剪切
  • shell实现的实验步骤
  • Nodejs之http的表单提交
  • JavaScript中的数据类型
  • unity 3d 介绍
  • jquery打开文件对话框
  • jquery中用onclick绑定点击事件
  • 电力企业所得税按期
  • 陕西电子发票开票流程?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设