本文档介绍了 React Router 提供的开发工具,以增强开发体验和优化生产构建。这些工具包括用于改进构建流程的 Vite 插件、CLI 工具、类型生成和测试基础设施。
有关特定平台集成的更多信息,请参阅 平台适配。
React Router 的开发工具主要打包在 @react-router/dev 中,它提供了与现代构建工具(尤其是 Vite)的无缝集成。这些工具支持自动路由发现、优化构建、类型生成和简化的服务器端渲染等功能。
开发工具协同工作,提供从项目初始化到开发和部署的统一开发体验。
来源
React Router Vite 插件 (@react-router/dev/vite) 是实现高级构建功能的核心组件。它挂钩到 Vite 的插件系统,为 React Router 应用程序提供专门的处理。
该插件创建一个专门的上下文,用于存储有关路由、资产和构建配置的信息。该上下文在整个构建过程中用于生成客户端和服务器环境的优化输出。
路由发现和处理:该插件根据文件系统约定自动发现和处理路由。
服务器端渲染支持:包括对服务器端渲染的专门处理,例如 Single Fetch 等数据加载策略。
构建优化:执行针对 React Router 应用程序的构建时优化,例如代码分割、树抖动和死代码消除。
热模块替换 (HMR):支持高级 HMR,可在开发过程中保留应用程序状态。
来源
React Router 开发工具中的构建过程旨在为客户端和服务器环境创建优化的包。
客户端构建过程会为浏览器创建优化的 JavaScript 包。关键方面包括:
服务器构建过程会创建专为服务器端渲染设计的包
构建过程的关键部分是 manifest 文件的生成
这些 manifest 在开发和生产过程中都会被使用,以支持代码分割、预取和优化的数据加载等功能。
来源
React Router 的开发工具包括对服务器端渲染(SSR)的全面支持。这包括对数据加载、hydration 和特定环境适配的专门处理。
React Router SSR 的主要优化之一是 Single Fetch API,它允许在一个请求中加载页面所需的所有数据。这是通过以下方式实现的:
开发工具包括对 hydrate 服务器渲染应用程序的专门处理
来源
React Router 的开发工具支持预渲染,它允许在构建过程中生成静态 HTML,以提高性能和 SEO。
预渲染可以通过几种方式配置:
prerender: true 来预渲染所有静态路由对于每个预渲染的页面,React Router 会:
.data 文件这种方法允许静态托管预渲染的内容,同时能够动态更新客户端上的数据。
来源
React Router 的开发工具通过灵活的环境 API 和服务器包生成来支持不同的服务器环境。
环境 API 允许对不同环境进行专门处理
服务器包允许将服务器端代码拆分成多个包以进行优化加载
来源
开发工具包括路由的自动类型生成,这可以改善使用 TypeScript 的开发体验。
类型生成系统为每个路由创建专门的类型
生成的类型与支持 TypeScript 的 IDE 无缝集成,提供:
来源
React Router 包含一套用于项目创建、开发和构建的命令行工具。
create-react-router 工具用于引导新的 React Router 项目
react-router dev 命令运行一个开发服务器,提供:
react-router build 命令创建生产构建
来源
React Router 的开发工具集成了各种平台和服务器环境。
@react-router/node 包提供了核心的 Node.js 功能
针对不同服务器环境的专用包
这些集成允许 React Router 应用程序部署到各种环境,并提供优化的服务器端渲染支持。
来源
React Router 的开发工具包含多项高级功能,可同时增强开发体验和生产性能。
“Fog of War” 功能通过仅加载当前路由的代码,然后根据需要逐步发现和加载路由,来优化初始包大小。
该系统:
来源
拆分路由模块功能将客户端和服务器端路由代码分开,以实现最佳包大小。
此功能:
loader 和 action 代码与客户端捆绑包分离clientLoader 和 clientAction 保留在客户端捆绑包中来源
React Router 的开发工具包含全面的测试基础设施,用于验证不同环境下的功能。
代码库包含广泛的集成测试,用于验证
专门的测试助手有助于测试 React Router 应用程序
来源
React Router 的开发工具提供了一套全面的实用程序,用于构建、优化和部署 React Router 应用程序。这些工具与 Vite 等现代构建系统深度集成,以提供优化的开发体验和高性能的生产构建。
主要功能包括
这些工具协同工作,能够开发出快速、类型安全且易于维护的 React Router 应用程序。