Next.js 最佳实践
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/nextjs-best-practices。
技能介绍
你在 App Router 里常踩的坑
Next.js 13+ 默认走 App Router,但很多项目仍把 'use client' 铺满页面、在浏览器里拉数据,或不清楚 静态 / ISR / 动态 该选哪一种。路由文件(loading.tsx、error.tsx)和缓存层(fetch、revalidate、路由段配置)叠在一起时,也容易写出「能跑但难维护」的结构。
技能在讲什么
本技能把 App Router 开发收成 十条可对照的原则,核心是:默认服务端组件,只在表单、按钮等交互处加客户端组件。
- 数据:构建时静态、
revalidate做 ISR、no-store做按请求动态;数据库走服务端组件,用户输入走客户端状态 + Server Actions('use server'、校验输入、类型化返回)。 - 路由:
page/layout/loading/error/not-found各司其职;路由组(name)、并行@slot、拦截(.)用于组织与模态,不改变「一文件一路由」的心智。 - API 与性能:Route Handler 按 HTTP 方法分工,输入用 Zod,尽量 Edge runtime;图片用
next/image,重组件 动态导入,配合 bundle analyzer。 - 元数据与缓存:静态
metadata或generateMetadata;缓存从 fetch、数据标签到整段路由分层控制,按需revalidatePath/revalidateTag。
适用边界
这是 约定与决策清单,不是替代官方文档的 API 参考;具体框架版本差异需以项目为准。文中 项目结构 一节在资料里未展开,落地时仍要按团队目录规范自行补全。
使用场景
- 新页面要接数据库列表,需决定用服务端组件 fetch 还是客户端拉 API,并对照静态/ISR/动态策略
- 表单提交后要改库并刷新列表,想按 Server Actions 规范写 `'use server'`、校验与 revalidate
- 并行路由或拦截路由做模态详情,需确认 `(.)`、`@slot` 与 loading/error 文件怎么配
- Route Handler 对外暴露 REST 接口,需统一 Zod 校验、状态码与是否上 Edge runtime
适合人员
- 维护 Next.js 14+ 业务站的前端,要把 `'use client'` 范围收窄并统一数据获取层
- 全栈工程师在 App Router 里拆 layout/page/loading/error,避免路由组与并行槽位用错导致 URL 或布局错乱
- 负责 SEO 与首屏的同学,需按 generateMetadata 与 next/image 优先级调整元数据与图片策略
- 做性能治理的开发者,要用动态导入、bundle analyzer 和分层 revalidate 控制客户端包体积与缓存