SuperAPI AI 工具集

nextjs-advanced-routing

编程与开发

查看项目

更新于 10-15 15:37

技能介绍

用途

该技能用于指导 Next.js App Router 的高级路由开发,适用于以下场景:

  • 使用 Route Handlers 创建 API 端点
  • 实现 Parallel Routes 或 Intercepting Routes
  • 使用 Server Actions 构建表单
  • 设置 Cookie 或处理数据变更
  • 创建错误边界
  • 为 CMS 预览实现草稿模式
  • 配置流式渲染与 Suspense 边界
  • 构建复杂路由模式(弹窗、抽屉)

主要能力

TypeScript 类型安全

资料明确要求:代码库启用了 @typescript-eslint/no-explicit-any,使用 any 会导致构建失败。资料提供了页面 props、表单事件、Server Action 等常见 Next.js 类型模式的示例。

Route Handlers(API 路由)

Route Handlers 替代 Pages Router 中的 API Routes,创建于 route.ts 或 route.js 文件中。资料涵盖:基础 Route Handler、支持的 HTTP 方法(GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS)、动态 Route Handler、请求头与 Cookie 访问、在 Route Handler 中设置 Cookie、CORS 配置、流式响应。

Server Actions

Server Actions 允许无需创建 API 端点即可执行服务端数据变更。资料说明两种 'use server' 指令模式:文件级(推荐用于多个 action)与函数级(用于单个 action 或混合文件)。

Server Action 文件命名与位置

  • 若需求指定了文件名,严格遵循该指令
  • 无指定时的默认值:app/actions.ts 适合多个 action 集合,app/action.ts 适合单个表单处理器
  • 选择依据:匹配现有模式、单个与多个导出、明确要求
  • 位置指南:Server Actions 应位于 app/ 目录下;与调用它的 UI 放在一起,除非被多个路由共享;避免放在 lib/ 或 utils/,除非被多个远距离路由触发且仅服务端使用

Server Action 返回类型的关键规则

资料强调:当使用 <form action={serverAction}> 时,函数必须没有返回语句(隐式返回 void),TypeScript 会拒绝任何返回值,即使 return undefined 或 return null。资料给出了两种正确模式:

  • 模式 1(简单表单 action):验证失败时抛出错误而非返回错误对象,处理后无返回语句,使用 revalidatePath 触发 UI 更新
  • 模式 2(配合 useActionState 提供反馈):可返回数据对象用于展示成功或错误消息

资料特别指出,若代码库中出现了从表单 action 返回数据的示例,属于反模式,应移除返回语句。

在客户端组件中调用 Server Action

客户端组件需要调用 Server Action 时,应在单独文件中创建带 'use server' 指令的 Server Action,再在客户端组件中导入使用。资料明确禁止在同一文件中混用 'use server' 与 'use client'。

表单验证示例

资料给出了多字段校验的示例:对所有必填字段一起检查,任一缺失则抛出错误,处理后不返回任何内容。

使用方式

该技能以代码示例为核心内容,用户在开发 Next.js App Router 项目时按需求场景参考对应示例。资料中所有代码均使用 TypeScript。

适用场景与限制

适用场景包括构建 API 端点、并行或拦截路由、Server Action 表单、Cookie 与数据变更、错误边界、草稿模式、流式渲染、弹窗与抽屉等复杂路由模式。

限制方面:资料未提供具体的安装命令、配置步骤、版本要求、收费信息或平台支持细节,这些内容暂未提供。资料仅针对 Next.js App Router,且假定代码库启用 @typescript-eslint/no-explicit-any 规则。