用途:为 Next.js App Router 开发提供一套实践原则,指导组件划分、数据获取、路由组织、缓存与性能优化。
主要能力:
- 组件划分:默认使用 Server Component;需要 useState、useEffect、事件处理时用 Client Component('use client');两者都需要时拆分为 Server 父组件 + Client 子组件。
- 数据获取:默认静态缓存;revalidate 实现 ISR;no-store 每次请求动态获取。数据库走 Server Component fetch,API 用带缓存的 fetch,用户输入用客户端状态 + Server Action。
- 路由约定:page.tsx、layout.tsx、loading.tsx、error.tsx、not-found.tsx;路由组 (name) 不影响 URL,并行路由 @slot,拦截路由 (.) 用于模态。
- API 路由:Route Handler 支持 GET/POST/PUT/PATCH/DELETE;建议用 Zod 校验输入、返回正确状态码、优雅处理错误、尽量用 Edge runtime。
- 性能:使用 next/image,首屏设 priority,提供 blur 占位与响应式尺寸;重组件动态导入,路由级自动代码分割,用 bundle analyzer 分析。
- 元数据:静态导出或 generateMetadata 动态生成;title 50-60 字符,description 150-160 字符,含 Open Graph 图片与 canonical URL。
- 缓存:请求层用 fetch options,数据层用 revalidate/tags,整路由用 route config;支持时间型 revalidate: 60、按需 revalidatePath/Tag、no-store 不缓存。
- Server Actions:用于表单提交、数据变更、触发重新验证;标记 'use server',校验所有输入,返回类型化响应并处理错误。
- 反模式:避免到处 'use client'、在客户端组件中获取数据、忽略 loading 与 error 边界、产生过大客户端包。
- 项目结构:app/ 下按 (marketing)、(dashboard) 等路由组组织,api/[resource]/route.ts 放接口,components/ui 放 UI 组件。
使用方式:作为开发时的参考原则,按上述决策树与约定编写代码。
限制:资料未提供具体安装命令、版本要求、收费信息或效果数据,暂未提供。