• 产品简介
  • 快速开始
    • 导入 Git 仓库
    • 从模板开始
    • 直接上传
    • 从 AI 开始
  • 框架指南
    • 前端
    • 后端
    • 全栈
      • Next.js
      • Nuxt
      • Astro
      • React Router
      • SvelteKit
    • 自定义 404 页面
  • 项目指南
    • 项目管理
    • edgeone.json
    • 缓存配置
    • 错误码
  • 构建指南
  • 部署指南
    • 概览
    • 触发部署
    • 管理部署
    • 部署按钮
    • 使用 Github Action
    • 使用 CNB 插件
    • 使用 IDE 插件
    • 使用 CodeBuddy IDE
  • 域名管理
    • 概览
    • 自定义域名
    • 配置 HTTPS 证书
    • 如何配置 DNS 的 CNAME 记录
  • Pages Functions
    • 概览
    • Edge Functions
    • Node Functions
  • 日志分析
  • KV 存储
  • 边缘 AI
  • API Token
  • EdgeOne CLI
  • Pages MCP
  • 集成指南
    • AI
      • 对话型大模型集成
      • 图片大模型集成
    • 数据库
      • Supabase 集成
      • Pages KV 集成
    • 电商
      • Shopify 集成
      • WooCommerce 集成
    • 支付
      • Stripe 集成
      • Paddle 集成
    • CMS
      • WordPress 集成
      • Contentful 集成
      • Sanity 集成
    • 身份验证
      • Supabase 集成
      • Clerk 集成
  • 最佳实践
    • 使用通用大模型快速搭建 AI 应用
    • 使用边缘 AI 模型快速搭建对话型 AI 站点
    • 使用 Shopify 搭建电商平台
    • 使用 Supabase 和 Stripe 搭建 SaaS 站点
    • 如何快速搭建公司品牌站点
    • 如何快速搭建博客站点
  • 迁移指南
    • 从 Vercel 迁移至 EdgeOne Pages
    • 从 Cloudflare Pages 迁移至 EdgeOne Pages
    • 从 Netlify 迁移至 EdgeOne Pages
  • 排障指南
  • 常见问题
  • 联系我们
  • 产品动态

React Router

React Router 是 React 生态中最流行的路由解决方案,现已演进为全栈框架。React Router 7 基于 Vite 构建,提供了现代化的开发体验,支持服务端渲染、静态生成等多种渲染模式,让您能够构建高性能的全栈 Web 应用。
注意:
目前 Pages 对 React Router 版本的支持为 7+,支持全栈部署。


核心特点

全栈框架:从单纯的路由库升级为全栈框架,支持前后端一体化开发。
多渲染模式:支持 SSR(服务端渲染)、SSG(静态生成)、SPA(单页应用)等多种渲染模式,灵活适配不同场景。
嵌套路由:强大的嵌套路由系统,支持布局嵌套和并行数据加载。
数据加载:内置数据加载机制(loader)和数据变更(action),简化数据获取和表单处理。
类型安全路由:原生 TypeScript 支持,提供完整的类型推断和路由类型安全。
文件式路由:支持基于文件系统的路由约定,简化路由配置。


快速开始

在 EdgeOne Pages 上开始部署 React Router 的项目:

通过 Git 仓库导入 React Router 的项目
从 Pages 的模板库选择 React Router 的模板
使用 @edgeone/react-router 框架适配器部署本地项目

了解 React Router 在 Pages 的部署表现,可以点击下方的示例模版:



Pages 对 React Router 的支持

下表是 Pages 目前支持 React Router 的关键特性。平台也会尽早支持更多特性,但实验性功能可能尚未完全稳定。
React Router 特性
支持情况
Server-Side Rendering (SSR)
Static Site Generation (SSG)
Single Page Application (SPA)
Route Loaders
Route Actions
Nested Routes
File-based Routing
Streaming
Experimental features
部分支持


在 Pages 部署 React Router 项目

@edgeone/react-router 是一个将 React Router v7 应用自动适配到 Pages 平台的 Vite 插件,可以配合 Pages 的脚手架工具将本地的 React Router
项目打包部署到 Pages 平台。@edgeone/react-router 的主要功能如下:

自动适配:将 React Router v7 应用转换为 Pages 平台可执行的格式
多模式支持:支持 SSR、SPA、预渲染等多种渲染模式
资源优化:自动处理和打包静态资源

要在 Pages 部署 React Router 项目,可以参考以下步骤操作。


1. 安装 EdgeOne CLI

安装 Pages 的脚手架工具,详细安装和使用方法请参考 EdgeOne CLI
注意:
@edgeone/react-router 要求脚手架版本 ≥ 1.2.0。部署前请先检查版本,避免部署失败。


2. 安装适配器

npm install @edgeone/react-router


3. 配置 Vite

在 vite.config.ts 中引入并使用 edgeoneAdapter :
import { reactRouter } from "@react-router/dev/vite";
import { defineConfig } from "vite";
import { edgeoneAdapter } from "@edgeone/react-router";

export default defineConfig({
plugins: [
reactRouter(),
edgeoneAdapter() // add EdgeOne adapter
],
});



4. 构建项目

使用 Pages 脚手架的 deploy 命令可自动完成构建并部署到 Pages 平台。
edgeone pages deploy


服务端渲染 (SSR)

服务端渲染允许您在服务器上动态渲染页面。每次用户发起请求时,服务器动态获取数据并生成 HTML,提供更好的 SEO 和首屏加载体验。

在 React Router 中,可以通过 loader 函数在服务端获取数据:
// routes/post.tsx
import type { Route } from "./+types/post";

export async function loader({ params }: Route.LoaderArgs) {
const post = await fetchPost(params.id);
return { post };
}

export default function Post({ loaderData }: Route.ComponentProps) {
return (
<article>
<h1>{loaderData.post.title}</h1>
<div>{loaderData.post.content}</div>
</article>
);
}

默认构建设置如下:
构建命令: npm run build
输出目录: build


静态站点生成(SSG)

React Router 支持在构建时预渲染静态页面。通过配置 prerender 选项,可以将指定路由生成为静态 HTML。

react-router.config.ts 中配置:
import type { Config } from "@react-router/dev/config";

export default {
async prerender() {
return [
"/",
"/about",
"/blog/post-1",
"/blog/post-2",
];
},
} satisfies Config;

也可以动态生成预渲染路由:
export default {
async prerender() {
const posts = await fetchAllPosts();
return [
"/",
...posts.map(post => `/blog/${post.slug}`)
];
},
} satisfies Config;

默认构建设置如下:
构建命令: npm run build
输出目录: build/client


单页应用 (SPA) 模式

如果不需要服务端功能,可以将 React Router 配置为纯 SPA 模式。在 react-router.config.ts 中设置:
import type { Config } from "@react-router/dev/config";

export default {
ssr: false,
} satisfies Config;

默认构建设置如下:
构建命令: npm run build
输出目录: build/client


流式渲染

React Router 支持通过 React 18 的 Suspense 实现流式渲染。页面内容可以从服务器逐步传输到客户端,无需等待所有数据加载完成。
import { Suspense } from "react";
import { Await } from "react-router";

export async function loader() {
// 返回 Promise 而不等待
const postsPromise = fetchPosts();
const weatherPromise = fetchWeather();
return {
posts: postsPromise,
weather: weatherPromise,
};
}

export default function Dashboard({ loaderData }) {
return (
<div>
<Suspense fallback={<p>加载帖子中...</p>}>
<Await resolve={loaderData.posts}>
{(posts) => <PostList posts={posts} />}
</Await>
</Suspense>
<Suspense fallback={<p>加载天气中...</p>}>
<Await resolve={loaderData.weather}>
{(weather) => <Weather data={weather} />}
</Await>
</Suspense>
</div>
);
}


更多资源