当前位置:首页 > 技术分析 > 正文内容

Vite 是什么(并且为什么如此流行)?

ruisui883个月前 (02-03)技术分析10

原文链接:
blog.stackblitz.com/posts/what-…

在Web开发的大千世界里,想要不听到关于Vite的讨论,那可真是难上加难。

自2020年4月发布以来,Vite的人气就像坐了火箭一样直线上升。截至写这篇文章的时候,这个项目在GitHub上已经获得了超过64k的star,并且在每周的npm下载量上超过了1200万,现在它支持着大多数开源框架,比如Nuxt、SvelteKit、Astro、SolidStart和Remix(这只是冰山一角)。

如果你想了解Vite的历史,推荐你观看Evan You在ViteConf 2022上的主旨演讲。

尽管Vite声名鹊起,但我们意识到许多开发者可能仍然不熟悉Vite是什么,或者它在推动现代Web框架和工具开发中扮演的关键角色。

在这篇文章中,我们将为你提供一个关于Vite的入门指南,以及它是如何在短短几年内成长为现代Web的中坚力量。

Vite是什么?

Vite的发音是/vit/,在法语中意味着“快速”或“迅速”,而且Vite绝对不负其名。

简单来说,Vite是一个现代JavaScript构建工具,它为常见的Web模式提供了开箱即用的支持,提供了优化的构建,结合了rollup的灵活性和成熟度,以及由esbuild实现的快速无捆绑开发服务器和原生ES模块。

Vite由Vue.js的创造者Evan You构思,目的是通过减少开发者在启动开发服务器和文件编辑后处理重新加载时遇到的瓶颈来简化打包过程。

Vite的核心特性

当你运行Vite时,你会注意到的第一个不同是开发服务器几乎是瞬间启动的。你可以访问vite.new并亲眼见证。这是因为Vite采用了按需服务的方式来将你的应用程序提供给浏览器。Vite不是首先打包整个源代码,而是根据浏览器的请求,实时将你编写的模块转换为浏览器能够理解的原生ESM模块。Vite开箱即支持TypeScript、PostCSS、CSS预处理器、JSON、WASM等,并且可以通过不断增长的插件生态系统扩展来支持你所有喜爱的框架和工具。

在开发过程中,每当你在项目中更改任何文件时,Vite都会使用应用程序的模块图只热重载受影响的模块(HMR)。这允许开发者预览他们的更改以及这些更改对应用程序的影响。Vite HMR的速度非常快,以至于可以允许编辑器自动保存,获得类似于在浏览器开发工具中修改CSS时的反馈循环。

Vite还执行依赖预打包。在开发过程中,它使用esbuild捆绑你的依赖项并将它们缓存起来,以加快未来的服务器启动速度。这个优化步骤还有助于加快加载时间,特别是对于导出许多小模块的依赖项(如lodash),因为浏览器每个依赖项只加载几个块而不是多个。它还允许Vite支持CommonJS和UMD代码中的依赖项,因为它们被捆绑成原生ESM模块。

当你准备部署时,Vite将使用优化的Rollup设置构建你的应用程序。它执行CSS代码拆分,添加预加载指令,并优化异步块的加载,无需任何配置。Vite提供了一个通用的与Rollup兼容的插件API,适用于开发和生产,使其更容易扩展和自定义你的构建过程。

使用Vite的好处

使用Vite有几个关键好处。以下是我们最喜欢的一些:

开源和独立

Vite是由一群开源开发者开发的,由来自不同背景的开发团队带头。Vite核心仓库最近已经超过900个贡献者。它正在积极开发和维护,新功能不断实现,漏洞也在稳定地得到修复。这也意味着不断发展的功能集反映了大量多样化产品的真实应用需求的交叉部分。

快速的本地开发

开发体验(DX)是Vite的核心,每次保存时你都能感受到它。我们常常认为重新加载的速度是理所当然的。但随着你的应用程序增长,重新加载速度逐渐变慢,你会感激Vite保持(几乎)即时重新加载的能力,无论应用程序大小如何。

广泛的生态系统支持

Vite的方法受到了非常好的接受,大多数框架和工具默认使用Vite或提供一流的支持。通过选择Vite作为构建工具,这些项目的维护者可以在它们之间共享一个共同的基础,并随着时间的推移共同改进它。因此,他们可以花更多的时间开发用户需要的功能,而不是重新发明轮子。

这对每个人都是双赢的。

易于扩展

Vite对Rollup插件API的赌注得到了回报。插件允许下游项目共享Vite核心提供的功能。有许多高质量的插件可供使用,如vite-plugin-pwa和vite-imagetools。

框架构建难题中的重要一块

Vite是现代元框架正在构建的大块之一。它是正在采取类似路径的更大工具生态系统的一部分。Volar是StackBlitz团队自豪支持的另一个工具。它为自定义编程语言(如Vue、MDX和Astro)提供了在代码编辑器中构建坚实且高效编辑体验所需的工具。它允许框架为其用户提供悬停信息、诊断和自动补全等功能,共享Volar作为共同基础来为它们提供动力。另一个绝佳的例子是Nitro,一个服务器工具包,用于创建支持每个主要部署平台的全功能Web服务器。它是一系列框架无关的库UnJS的一部分。还有Dev Toolkit,这是一个新的努力,旨在为框架开发工具共享一个共同的基础。

开始使用Vite

对于像StackBlitz和Vite这样的工具,理解它们为何不同最好的方式就是亲自尝试。Vite在StackBlitz中得到了全面支持,这使得创建按需环境变得轻而易举。Vite团队使用StackBlitz来驱动其在线启动器。点击你最喜欢的框架,编辑一些组件,看看Vite是如何工作的。

使用Vite开发

在使用Vite开发时,你可以运行三个命令。

  • vite dev 启动Vite开发服务器(当你在StackBlitz中打开Vite项目时,它会自动为你启动)
  • vite build 准备生产构建
  • vite preview 允许你预览你构建的网站或应用程序

确保在运行vite preview之前运行vite build,以查看你的更改。

Vite的未来

在最近的ViteConf主题演讲中,Evan分享了尽管Vite正在取得巨大进步,但项目仍面临一些已知的问题和挑战。

正如我们之前讨论的,Vite目前使用Rollup进行生产构建。这并不像esbuild或Bun这样的原生打包器那样快。Vite还尽可能地减少了开发环境和生产环境之间的不一致性,但由于Rollup和esbuild之间的差异,一些不一致性是不可避免的。

Evan现在带领一个新团队开发Rolldown,这是一款基于Rust的Rollup端口,建立在OXC(JavaScript氧化编译器)之上,力求与Rollup兼容。这个想法是用Rolldown替换Vite中的Rollup和esbuild。Vite将拥有一个单一的基础,结合了Rollup的灵活性和esbuild的速度,消除了不一致性,使代码库更易于维护,并加快了构建时间。

Rolldown目前还处于早期阶段,但已经显示出了有希望的结果。该项目现在已开源,Rolldown团队正在寻找贡献者来帮助实现这一愿景。

与此同时,Vite团队在每个版本中都在不断改进Vite。由Vitest和Nuxt Dev SSR驱动的引擎vite-node的工作已经开始,演变成Vite API的全面修订,面向框架作者。新的环境API预计将在Vite v6中发布,它将成为自Vite 2发布以来Vite最大的变化之一。它将允许在任何数量的环境中通过Vite插件管道运行代码,解锁了对workers、RSC等的一级支持。

总结

Vite正在开辟一条前进的道路,并且正在迅速成为JavaScript生态系统中的标准构建工具。

StackBlitz很自豪能够成为Vite的支持者,我们期待看到2024年项目如何发展!

今天就试试vite.new,并关注更多Vite相关新闻。




文章转自:
https://juejin.cn/post/7376556275973095487

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/831.html

标签: vite.js
分享给朋友:

“Vite 是什么(并且为什么如此流行)?” 的相关文章

10款超牛Vim插件,爱不释手了

我是一个忠实的Vim编辑器用户,从事开发工作多年,我一直都非常喜欢使用Vim。轻量、便捷,而且,熟悉了Vim相关的快捷键之后,效率能够成倍的提升。除了这些之外,Vim像很多知名的IDE、编辑器一样,也支持插件配置,通过这些插件,可以实现更多高级、高效的操作。今天,就来给大家分享10个我特别喜欢的Vi...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...

再来一波黑科技工具,低调使用

静读天下静读天下是一个特别优秀的电子书阅读器。它上面有多个在线书库,像古登堡计划,很多种优秀的书杂志,都可以下载来阅读。它还能智能识别章节功能,还支持外置的语音阅读功能。它支持多种文本格式,比如说txt,pdf,epub,mobi等等。为了便于阅读它还有10 种配色方式,还有夜间模式。不过免费版有广...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...

佳能 EOS R8 深度评测

佳能 EOS R8 的定位是入门级全画幅无反光镜可换镜头相机。尽管在产品阵容中处于这一位置,R8 仍然是一个强大的相机,配备了先进的 R6 II 同款成像传感器、快速处理器和令人难以置信的自动对焦系统,体积小、重量轻、价格低。这款相机是发烧友、旅行者、家庭以及任何想要全画幅传感器相机的人的绝佳选择。...

22《Vue 入门教程》VueRouter 路由嵌套

1. 前言本小节我们介绍如何嵌套使用 VueRouter。嵌套路由在日常的开发中非常常见,如何定义和使用嵌套路由是本节的重点。同学们在学完本节课程之后需要自己多尝试配置路由。2. 配置嵌套路由实际项目中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层...