项目理念
精简且可扩展的核心
Vite 的目标不在于满足所有用户的每一个使用场景。Vite 旨在开箱即用地支持构建 Web 应用的最常见的模式,但 Vite 核心包 必须保持精简并拥有较小的 API 接口,以保证项目长期维护的可行性。这一目标之所以可能实现,得益于 Vite 基于 Rollup 的插件系统 。可以作为外部插件实现的功能通常不会添加到 Vite 核心中。 vite-plugin-pwa 是一个很好的示例,展示了 Vite 核心之外能实现的强大功能,并且有许多 维护良好的插件 来满足您的需求。Vite 与 Rollup 项目紧密合作,确保插件在尽可能多的情况下既可用于纯 Rollup 项目,也可用于 Vite 项目,并努力将必要的扩展推送到上游 Plugin API 中。
推动现代 Web 开发
Vite 提供了一系列推动编写现代代码的特定功能。例如:
- 源代码必须采用 ESM 形式编写;对于非 ESM 的依赖项,为了使其正常工作,需要 预先将其打包为 ESM。
- 建议使用
new Worker语法 来编写 Web Workers,以遵循现代标准。 - 在浏览器环境下,不能直接使用 Node.js 模块。
在新增特性时,会遵循这些模式来构建一个具备前瞻性的 API,但请注意,这样的API可能并不总是与其它构建工具兼容。
旨在高性能的实用解决方案
Vite 自其诞生之初(详见:为什么选 Vite)就一直致力于性能优化。其开发服务器架构设计确保了随着项目规模扩大,模块热替换(HMR)仍能保持高速运行。Vite 基于 Oxc toolchain 和 Rolldown 这样的原生工具处理复杂的任务,同时将其他部分代码保留在 JavaScript 中,以实现速度与灵活性之间的平衡。在需要时,框架插件会利用 Babel 来编译用户代码。得益于 Rolldown 对 Rollup 插件的兼容性,Vite 能够访问广泛的插件生态系统。
基于 Vite 构建框架
尽管 Vite 可以直接供用户使用,但它尤其适合作为创建框架的工具。Vite 核心本身不特定于任何框架,但针对每个 UI 框架都提供了完善的插件支持。其 JS API 允许应用框架作者利用 Vite 特性为他们的用户提供定制化的体验。Vite 包含了对 SSR 基础功能 的支持,这些功能通常在更高级别的工具中出现,但对于构建现代 Web 框架至关重要。Vite 插件通过提供一种跨框架共享的方式,使整体方案更为完备。此外,当与诸如 Ruby 和 Laravel 等 后端框架 结合使用时,Vite 也是一个绝佳选择。
活跃的生态系统
Vite 的发展是一个由框架和插件维护者、用户以及 Vite 团队共同协作的过程。我们鼓励当项目采用 Vite 时,也可以积极参与 Vite 核心开发。我们借助如 vite-ecosystem-ci 等工具与生态中的主要项目紧密合作,在每次发布时尽量减少回归问题。该工具允许我们在选定的 PR 上运行使用 Vite 的主要项目的 CI,并让我们清晰了解生态系统对新版本发布的反应情况。我们力求在问题影响到用户之前修复回归问题,确保项目能够尽快更新至最新版本。如果您正在使用 Vite,我们诚邀您加入 Vite Discord 频道 ,一同参与项目的发展。