SuperAPI AI 工具集

nextjs-v16

编程与开发

查看项目

更新于 10-16 06:04

技能介绍

用途

该技能面向使用 Next.js 16 进行页面开发、数据获取与变更处理的场景,提供缓存组件、服务端组件、服务端操作(Server Actions)和错误处理方面的模式与最佳实践。

主要能力

缓存组件

用于实现高效的缓存策略,以优化性能并降低服务器负载。核心概念包括:

  • "use cache" 指令:在服务端组件中函数级标记为可缓存,实现自动记忆化,并基于 cacheLife() 配置进行重新验证,适用于数据获取与计算开销较大的操作。
  • cacheTag():为缓存数据打标签,支持细粒度重新验证,在变更后使用 updateTag() 工具失效特定数据。
  • cacheLife():定义缓存数据的有效期,支持绝对时间与相对过期时间,按数据新鲜度需求配置。

资料给出了基础缓存组件、带标签与生命周期的缓存函数、在页面与内容组件中使用缓存数据、以及在变更后调用 updateTag() 失效缓存的示例。

服务端操作

服务端操作提供一种统一方式,可直接从组件处理变更与数据操作,无需创建 API 路由,是 Next.js 16 中数据变更的首选方式。资料列出的优势包括:类型安全、就近定义、渐进增强(表单在无 JavaScript 时仍可用)、简化鉴权、无需 CORS、更好的开发体验。

适用场景:表单提交与变更、数据库操作(创建、更新、删除)、UI 触发的用户操作、变更后数据重新验证、文件上传以及大多数 CRUD 操作。

只在以下情况使用 API 路由:外部服务的 webhook、面向第三方集成的公开 API、非浏览器客户端(移动应用、CLI 工具)、自定义鉴权回调、Server-Sent Events 或 WebSocket 连接。

资料提供了基础服务端操作模式(鉴权、校验、执行、失效缓存、返回结果)、在客户端组件中使用(结合 react-hook-form 与 zodResolver)、使用 useActionState 实现渐进增强、以及服务端操作中的错误处理示例。

服务端组件

用于安全的数据访问、减少 JavaScript 包体积并提升性能。最佳实践包括:默认使用服务端组件;使用异步服务端组件获取数据;避免不必要的客户端组件包装;仅在需要交互时使用客户端组件;只在服务端组件中获取数据;将获取的数据作为 props 传给客户端组件;绝不向客户端暴露敏感 API 密钥。

Suspense 边界:将数据获取组件包裹在 Suspense 中;提供合适的回退 UI(骨架屏);启用流式与渐进式渲染。运行时 API(cookies、headers)也应包裹在 Suspense 中,资料给出了相应示例。

错误处理

提供健壮的错误边界与回退 UI。

  • error.tsx:创建按片段划分的错误边界,优雅地包裹服务端错误,向用户提供恢复选项。
  • not-found.tsx:处理 404 场景,提供返回主内容的导航。
  • 异步错误处理:在服务端操作中返回结构化错误响应。

推荐做法:处理前用 Zod 校验所有输入;从服务端操作返回结构化错误响应;使用错误边界进行 UI 恢复;记录错误以便监控与调试;提供用户友好的错误消息;避免向客户端暴露敏感错误细节。

开发检查清单

构建 Next.js 16 功能时:所有变更使用服务端操作而非 API 路由;默认使用服务端组件;用 "use cache" 和 cacheLife() 实现缓存组件;为流式内容添加 Suspense 边界;将运行时 API 包裹在 Suspense 中;创建 error.tsx 与 not-found.tsx 处理错误;在服务端操作中用 Zod schema 校验输入;变更后调用 updateTag() 或 revalidatePath();测试变更后的缓存失效;尽量减少客户端 JavaScript;仅为 webhook 或外部集成创建 API 路由。

限制

资料未说明该技能的安装命令、平台要求、版本前提或收费信息,这些内容暂未提供。