用途
该技能用于指导 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 规则。