Vite首次启动慢的问题

这篇具有很好参考价值的文章主要介绍了Vite首次启动慢的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

::: warning

​ 众所周知,通常情况下Vite要比Webpack快,但经过实际感受,默认情况下,Vite项目的启动速度确实很快,但如果某个界面是第一次进入,且依赖比较多或者比较复杂的话,就会很慢,这篇博客来讨论一下这个问题(Vite2.x版本)。

:::

Vite到底是快还是慢?

::: tip

​ 单方面说Vite快太过笼统,但Vite项目的启动确实非常快(这里的启动指的是命令行启动完毕,而不是页面加载完毕的时间)

​ 但启动完之后,打开首页,如果依赖的资源比较多,那么有可能慢到让你怀疑人生

​ 简单来说,Vite之所以启动那么快,是因为它启动时不会像Webpack那样对所有代码进行编译/打包/压缩,而是采用bundless的思路,启动时只进行第三方依赖的预构建,实际浏览器访问的时候,再通过本地服务器实时转换每个请求的文件,达到缩短首次启动时间的目的。

​ 关于Vite的具体原理可以参考: Vite原理与实践记录

:::

对Vite启动后页面加载的过程进行分析

::: tip

  • 打开浏览器开发者工具,可以看到请求了很多的资源
  • 终端中也会显示:
    • [vite] new dependencies found: axios, updating...
    • [vite] ? dependencies updated, reloading page...
  • 同时,界面会被强制刷新一次

:::

Vite首次启动慢的问题,vite,前端,vue,前端构建工具

具体的性能分析可参考下面这篇文章:

Vite首次启动加载慢

解决方案

在Vite2.x之前

::: tip

​ 官方文档中有简单提到这个问题的解决方式:Vite官网: 依赖优化选项

​ 总之就是在vite.config.ts中进行配置,让Vite能在启动之初就对某些资源进行预打包,避免启动完成后再进行动态打包。

:::

{
   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,会看到多了Pre-bundling dependencies的信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-taH5H6GJ-1690992109265)(https://fastly.jsdelivr.net/gh/Ocean-H1/blog_image_bed/202303151716355.png)]

::: tip

​ 但实际上,每次都进行手动配置太麻烦,也增加了开发人员的心智负担,在Vite2.x之前,可以使用插件来进行配置。
​ NPM: vite-plugin-optimize-persist

:::

插件使用
npm i -D vite-plugin-optimize-persist vite-plugin-package-config

在 vite.config.ts中配置Plugins:

// vite.config.ts
import OptimizationPersist from 'vite-plugin-optimize-persist'
import PkgConfig from 'vite-plugin-package-config'

export default {
  plugins: [
    PkgConfig(),
    OptimizationPersist()
  ]
}

::: warning

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

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

:::

参考链接:

Vite原理与实践记录

Vite首次启动加载慢

:::

参考链接:

Vite原理与实践记录

Vite首次启动加载慢

Vite解决项目刷新慢问题(请求量过大)文章来源地址https://www.toymoban.com/news/detail-632556.html

到了这里,关于Vite首次启动慢的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3 更高效的构建工具——Vite

    本文讲解了构建工具 Vite,目前只有vue3才可以使用Vite,如果本文对你有所帮助请三连支持博主。 下面案例可供参考 Vite 是一种面向现代浏览器的一个更轻、更快的 前端构建工具 ,能够显著提升前端的开发体验。除了Vite外,前端著名的构建工具还有Webpack和Gulp。目前,Vite已

    2024年02月14日
    浏览(37)
  • Vue3通透教程【二】更高效的构建工具—Vite

    专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其

    2024年02月03日
    浏览(42)
  • 微软语音合成工具+基于Electron + Vue + ElementPlus + Vite 构建并能将文字转换为语音 MP3

    资源下:微软语音合成工具+基于Electron+Vue+ElementPlus+Vite构建并能将文字转换为语音

    2024年02月04日
    浏览(47)
  • Vite+Vue3项目如何获取环境配置,并解决前端跨域问题

    根目录新建.env.development和.env.production文件 package.json配置启动参数 vite命令启动项目时,指定mode参数,加载vite.config.ts文件。 配置代理 在vite.config.ts中配置代理 配置vite-plugin-html 通过vite-plugin-html组件,可以将配置文件中的数据,绑定到index.html中,可以实现不同环境的页面ti

    2024年02月19日
    浏览(66)
  • Soybean Admin - 基于 Vue3 / vite3 等最新前端技术栈构建的中后台模板,免费开源、清新优雅,主题丰富

    一款专业好看、完成度很高的 admin 开源项目,无论是用于生产还是学习,都非常值得尝试。 关于 Soybean Admin Soybean Admin 是一个基于 Vue3 / Vite3 / TypeScript / NaiveUI / Pinia 和 UnoCSS 的中后台模版,它使用了最新流行的前端技术栈,内置丰富的主题配置,有着极高的代码规范,基于文

    2024年02月11日
    浏览(59)
  • 了解vite构建工具

    vite是一个新型的前端构建工具,他主要由两部分组成, 开发工具和构建指令 。随着前端应用越来越庞大复杂,例如上千个模块,基于js开发的工具(例如webpack、Rollup、Parcel)就会遇到性能瓶颈,而vite就是用来解决这个问题,他的与构建依赖的速度比js打包构建工具的速度快

    2024年02月01日
    浏览(30)
  • 记:vite3+vue3+axios前端项目跨域问题解决【前端和服务器nginx配置】

    前言:什么是跨域,网上一搜一大把,所以这里直接跳过,直入主题。 处理方式:不通过后端处理跨域,通过前端+服务器nginx处理。 1.前端涉及处理跨域的必要配置(开发环境、生产环境):vite3、vue3、axios 2.服务器涉及处理跨域的配置(生产环境):nginx【主要用到其配置

    2024年02月01日
    浏览(61)
  • vite + electron 构建前端桌面应用程序

    npm yarn 选择是否继续 项目名称 选择框架 选择项目语言 项目构建成功,根据提示进入项目目录,安装依赖 electron 官网:https://www.electronjs.org/zh/docs/latest/ vite-plugin-electron :https://github.com/electron-vite/vite-plugin-electron 安装依赖(electron 安装比较慢,耐心等待即可) 编写 Electron 入

    2024年02月06日
    浏览(52)
  • 构建工具 Vite、Webpack、Rollup对比

    热更新方面:webpack支持HMR,但是webpack需要全部重新编译并更新,效率较低 tree-shaking:webpack2开始支持且消除效果不好,但是webpack5有更好的tree-shaking(去除未使用代码) 分包方面:webpack支持代码切割。(分包) ESM打包:现在webpack支持es6module输出 优点: Rollup 是一款 ES Mod

    2024年02月09日
    浏览(42)
  • 前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十二章 常用工具函数 (Utils配置)

    在项目开发中,我们经常会使用一些工具函数,也经常会用到例如 loadsh 等工具库,但是这些工具库的体积往往比较大,如果项目本身已经引入了这些工具库,那么我们就没有必要再引入一次,所以我们需要自己封装一些工具函数,来简化我们的开发。 在 src/utils 目录下创建

    2024年02月20日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包