此页面介绍了 React Router 和 Vite 之间的集成,涵盖了如何在 Vite 的开发服务器和构建系统中使用 React Router。它解释了 React Router Vite 插件提供的插件架构、开发功能、构建过程优化以及服务器端渲染功能。
React Router Vite 插件(@react-router/dev/vite)提供了与 Vite 的开发服务器和构建系统的无缝集成。它提供了以下功能:
来源:packages/react-router-dev/vite/plugin.ts588-594 integration/vite-dev-test.ts16-26
Vite 集成的核心是 @react-router/dev/vite 导出的 reactRouterVitePlugin 函数。此函数返回一个 Vite 插件数组,用于处理集成的各个方面。
该插件处理:
要在 Vite 配置中使用该插件:
来源:packages/react-router-dev/vite/plugin.ts584-686 integration/helpers/vite.ts58-61
开发服务器提供路由的热模块重载 (HMR) 和开发期间的服务器端渲染 (SSR)。
在开发过程中,React Router 插件采用“单一数据获取”策略来高效地加载路由所需的数据。
开发服务器设置了:
来源:packages/react-router-dev/vite/plugin.ts1010-1109 packages/react-router/lib/dom/ssr/single-fetch.tsx162-248 packages/react-router/lib/server-runtime/server.ts83-324
React Router Vite 插件为客户端和服务器构建都优化了构建过程。
客户端构建过程
服务器构建过程
路由清单是客户端和服务器构建的关键部分。它包含有关路由、其资源和其能力的信息。
该插件支持在构建时对路由进行预渲染。
来源:packages/react-router-dev/vite/plugin.ts842-1008 integration/vite-prerender-test.ts132-516
React Router 的 Vite 集成在开发和生产中都提供了对服务器端渲染的强大支持。
SSR 的核心是 createRequestHandler 函数,它:
服务器渲染 HTML 后,客户端会对应用程序进行水合。
HydratedRouter 组件使用服务器数据进行初始化。来源:packages/react-router/lib/server-runtime/server.ts83-324 packages/react-router/lib/dom-export/hydrated-router.tsx78-253
“战争迷雾”路由发现是一项功能,它:
来源:packages/react-router/lib/dom/ssr/fog-of-war.ts100-184 integration/fog-of-war-test.ts86-96
服务器捆绑包允许将服务器代码分割成多个捆绑包,以提高性能和可扩展性。
来源:packages/react-router-dev/vite/plugin.ts514-552 integration/vite-server-bundles-test.ts56-75
该插件提供了与 Vite 的 CSS 处理的集成。
React Router 的 Vite 集成支持 SPA(单页应用程序)模式。
clientLoader 和 clientAction 进行纯客户端数据获取来源:integration/vite-spa-mode-test.ts19-40 packages/react-router-dev/vite/plugin.ts706-724
该集成支持 Vite 的环境变量 API,用于自定义环境。
来源:packages/react-router-dev/vite/plugin.ts139-172 integration/vite-dev-test.ts257-259
该插件与各种平台适配器集成。
来源: integration/vite-cloudflare-test.ts22-26 integration/helpers/vite.ts139-181
React Router Vite 集成提供了使用 Vite 开发和构建 React Router 应用程序的全面解决方案。它提供诸如开发时 SSR、优化构建、预渲染和平台特定适配等功能。
要开始,请安装必要的包并将插件添加到你的 Vite 配置中。
有关 React Router 核心概念的更多信息,请参阅 核心概念。