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.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.ts
import 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代码 “学会” 自动按需引入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16621.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习 吴恩达】2022课程笔记(持续更新)

一、机器学习 1.1 机器学习定义 计算机程序从经验E中学习,解决某一任务T,进行某一性能P,通过P测定在T上的表现因经验E而提高 eg:跳棋程序 E: 程序自身下的上万盘棋局 T: 下跳棋 P: 与新对手下…

AutoCV番外:Transformer

目录 Transformer注意事项一、2023/5/16更新前言1. Self-attention1.1 前置知识1.2 Self-attention机制1.3 矩阵乘法角度理解1.4 Multi-head Self-attention1.5 Positional Encoding1.6 Many application 2. Transformer2.1 前置知识2.2 Encoder2.3 AT Decoder2.4 NAT Decoder2…

Transformer算法解读(self-Attention/位置编码/多头注意力/掩码机制/QKV/Transformer堆叠/encoder/decoder)

本文主要从工程应用角度解读Transformer,如果需要从学术或者更加具体的了解Transformer,请参考这篇文章。 目录 1 自然语言处理 1.1 RNN 1.2 Transformer 1.3 传统的word2vec 2 Attention 2.1 Attention是什么意思 2.2 self-Attention是什么 2…

AI|用过的AI工具都给你整理好了

AI|用过的AI工具都给你整理好了 最近两周冷静下来了,而且个人状况因为二阳有所影响,没有过多关注这些AI工具;前两天给公司伙伴分享的契机,整理了一下这两个月用过的一些AI工具,部分是日常工作也在使用的&a…

GPT提示词系统学习-第一课-你竟然想不到一个3位数乘法GPT会算错的原因

开篇 在我这个系统的开篇“GPT使我变成超人”中说过,什么样的人使用AI才是起到决定作用的。AI只是工具,它不是万能。使用的人决定了AI可以带什么样的效果。一个很强的人当使用GPT时会形成1+1>2的效果。 因此,提示词的系统化学习是非常重要。这一门课是任何目前国内市面…

【前沿技术】文心一言 PK Chat Gpt

目录 写在前面 一、文心一言 二、Chat GPT 三、对比 四、总结 写在前面 随着人工智能技术的不断发展和普及,越来越多的智能应用走入了人们的日常生活,如智能语音助手、智能客服、机器翻译等等。在这些应用中,自然语言生成(…

【对比】文心一言对飚ChatGPT实操对比体验

前言 🍊缘由 百度【文心一言】体验申请通过 本狗中午干饭时,天降短信,告知可以体验文心一言,苦等一个月的实操终于到来。心中这好奇的对比心理油然而生,到底是老美的【ChatGPT】厉害,还是咱度娘的【文心一…

ChatGLM ptuning 的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Vicuna-13B云服务器部署

Vicuna概述 Vicuna由一群主要来自加州大学伯克利分校的研究人员推出,仍然是熟悉的配方、熟悉的味道。Vicuna同样是基于Meta开源的LLaMA大模型微调而来,它的训练数据是来自ShareGPT上的7万多条数据(ShareGPT一个分享ChatGPT对话的谷歌插件&am…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 : https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具,它不仅能管理包,还能隔…

“本草”大模型开源,ChatGPT时代,连AI私人医生都出现了?

大家好,我是千与千寻,也可以叫我千寻,今天给大家分享的ChatGPT新应用项目,是ChatGPT模型在医学领域的应用,什么,医学领域? 是的,没错,是医学领域的ChatGPT应用,我们都知道ChatGPT是OpenAI开源的一个智能对话式引擎,今天给大家分享的项目叫“本草”。 “本草”模型是…

linux下打开对外开放端口号

第一种方式 (1)查看对外开放的端口状态 查询已开放的端口 netstat -ntulp | grep 端口号:可以具体查看某一个端口号 查询指定端口是否已开 firewall-cmd --query-port666/tcp 提示 yes,表示开启&a…

chatgpt赋能python:Python怎么装中文?

Python怎么装中文? 介绍 Python是一种非常流行的编程语言,用于各种不同类型的任务,包括应用程序开发、数据科学和人工智能等等。但是,如果您在安装Python时遇到了一些困难,比如无法输入中文,那么阅读本文…

GitHub万星大佬做出纳?开发OpenAI工具必用知识集;ChatGPT最新速查表;6万字AI Prompt教程 | ShowMeAI日报

👀日报合辑 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 GitHub 万星大佬,生活所迫接连转行,外卖送过了,现在要去做出纳,买瓶可乐都得犹豫 🌏…

AutoGPT使用

windows和mac都可以使用 1,安装python 10 https://www.tutorialspoint.com/how-to-install-python-in-windows 2,下载AutoGPT代码 通过git克隆AutoGPT项目,git clone https://github.com/Torantulino/Auto-GPT.git如果没有安装git的同学就…

如何用Stable Diffusion模型生成个人专属创意名片?

目录 1 什么是二维码?2 什么是扩散模型?3 Stable Diffusion环境搭建4 开始制作创意名片结语 1 什么是二维码? 二维码是一种用于存储和传输信息的方便而广泛使用的图像编码技术。它是由黑色方块和白色空白区域组成的二维图形,可以…

chatgpt赋能python:用Python生成带照片的二维码,让你的业务变得更有效!

用Python生成带照片的二维码,让你的业务变得更有效! 当谈到数字营销和交流业务时,二维码已经成为了一种流行的选择。二维码可以将大量的信息储存到一个小小的图像中,方便让消费者扫描后获取信息,例如:产品…

【Prompt工程】爱因斯坦说:问题的表述往往比解决问题更为重要——这也许就是“提示工程”的本质……

爱因斯坦说过,问题的表述往往比解决问题更为重要,后者可能只是数学或实验技能这样的事。根据这句话,详细写一篇论文,5000字。 问题表述之重要性:从爱因斯坦的名言中揭示求解问题的关键 文章目录 问题表述之重要性:从爱因斯坦的名言中揭示求解问题的关键摘要引言问题表述对…

开源LLM领域变天!LLaMa惊天泄露引爆ChatGPT平替狂潮

©作者 | Aeneas 好困 来源 | 新智元 Meta的LLaMA模型开源,让文本大模型迎来了Stable Diffustion时刻。谁都没想到,LLaMA的一场「史诗级」泄漏,产生了一系列表现惊艳的ChatGPT「平替」。 谁能想到,一次意外的LLaMA泄漏&#x…

人工智能发展月报(2023年3月)

本期导读 3月,伴随着全网期待已久的GPT-4发布,人工智能业界的热度再度被推向新高。本月热点事件如火如荼,主要围绕大模型展开:国外方面,OpenAI除了GPT-4还快速推出相应插件、API 接口;微软系宣布将其接入O…