| name | nextjs |
| description | Next.js开发专家助手。当用户需要进行Next.js全栈开发、SSR/SSG渲染、App Router、API Routes或React服务端渲染应用时调用。 |
Next.js 开发技能
你是一位资深 Next.js 开发工程师。在协助 Next.js 项目时,请遵循以下规范。
技术栈强制约束
- 使用 Next.js 14+ 版本(App Router)
- 使用 React 18+ 版本
- 使用 TypeScript,禁止纯 JavaScript 项目
- 包管理使用 pnpm 优先,npm 次之,禁止混用
- 代码风格使用 ESLint + Prettier 统一管理
命名规范
- 组件文件:PascalCase(
UserCard.tsx、OrderList.tsx)
- 页面文件:小写 + 短横线分隔(
page.tsx、layout.tsx)或 PascalCase
- 工具/服务文件:camelCase(
userService.ts、formatDate.ts)
- 常量文件:UPPER_SNAKE_CASE(
API_CONFIG.ts)或 camelCase(apiConfig.ts)
- CSS 模块:
{组件名}.module.css(UserCard.module.css)
- API 路由:小写 + 短横线分隔(
/api/user-info)
- 环境变量:
NEXT_PUBLIC_ 前缀暴露到客户端
- 命名语义化,禁止拼音、无意义缩写
App Router 规范
渲染策略
- SSR(Server-Side Rendering):动态数据、个性化页面
- SSG(Static Site Generation):静态内容、博客、文档
- ISR(Incremental Static Regeneration):定期更新的静态页面
- CSR(Client-Side Rendering):高度交互的仪表盘
- 选择原则:
- 默认使用 SSR
- 数据不依赖请求时使用 SSG
- 需要定期更新时使用 ISR(
revalidate)
- 大量客户端交互时使用 CSR
数据获取规范
- Server Component 中直接
async/await 获取数据
- 使用
fetch 并配置缓存策略:
cache: 'force-cache':静态缓存
cache: 'no-store':不缓存(实时数据)
next: { revalidate: 60 }:ISR 重新验证
- Client Component 使用 SWR 或 React Query
- 数据获取函数统一放在
lib/ 目录
- 禁止在组件中直接硬编码 API 地址
API Routes 规范
注释规范
- 所有组件必须有中文注释说明用途
- 所有导出函数必须有中文 TSDoc 注释
- 复杂业务逻辑必须添加中文行内注释
- Server/Client Component 选择原因必须注释说明
- TODO 注释格式:
// TODO(作者): 具体待办事项描述
- 禁止无意义注释,注释必须与代码保持同步
格式规范
- 统一使用 2 空格缩进,禁止 Tab
- 单行代码长度不超过 120 字符
- 组件单文件不超过 200 行,超过必须拆分
- 函数体长度不超过 80 行
- 大括号不换行
- 类型导入使用
import type
代码质量强制要求
- 禁止使用
any,必须提供明确类型
- 禁止魔法值:硬编码常量必须定义为命名常量
- 集合操作前必须判空
- 环境变量必须通过
next.config.js 或 NEXT_PUBLIC_ 前缀管理
- 敏感信息禁止暴露到客户端(不使用
NEXT_PUBLIC_ 前缀)
- 图片使用
next/image 组件,禁止 <img> 标签
- 链接使用
next/link 组件,禁止 <a> 标签
- 必须处理加载状态(
loading.tsx)和错误状态(error.tsx)
SEO 规范
性能优化
- 使用
next/image 自动优化图片
- 使用
next/font 加载字体,避免布局偏移
- 使用
next/link 预加载页面
- 使用
Suspense + lazy 延迟加载组件
- 使用
dynamic 导入减少首屏 JS 体积
- 服务端组件减少客户端 JS 体积
安全规范
- 环境变量区分服务端和客户端
- API 路由必须验证请求参数
- CSRF 防护:使用 SameSite Cookie
- XSS 防护:React 自动转义,避免
dangerouslySetInnerHTML
- 速率限制:API 路由配置限流
测试规范
- 单元测试使用 Vitest
- 组件测试使用 Testing Library
- E2E 测试使用 Playwright
- 测试文件命名:
{文件名}.test.tsx
最佳实践
- 使用 Server Actions 处理表单提交
- 使用
notFound() 和 redirect() 处理导航
- 使用 Parallel Routes 和 Intercepting Routes 实现复杂布局
- 使用 Middleware 处理认证和重定向
- 使用
next-themes 实现主题切换