Next.js 15
规则
- 始终使用 App Router(
app/目录),绝不使用 Pages Router(pages/) - 默认使用 Server Components —— 仅在需要时(状态、副作用、浏览器 API)才添加
"use client" - 使用
generateMetadata()生成动态元数据,不要使用<Head> - 对于数据变更使用 Server Actions,不要为简单的表单创建 API 路由
- 使用
next/image并指定正确的width/height或fill—— 绝不要使用原生的<img> - 使用
next/link—— 对于内部导航,绝不要使用原生的<a> - 路由处理器位于
app/api/[route]/route.ts—— 导出命名函数(GET、POST) - 布局放在
layout.tsx中,加载状态放在loading.tsx中,错误边界放在error.tsx中 - 使用
unstable_cache或revalidateTag实现 ISR —— 不要使用旧的getStaticProps/getServerSideProps - 环境变量:客户端仅使用
NEXT_PUBLIC_前缀
避免
getServerSideProps、getStaticProps、getStaticPaths—— 这些属于 Pages Router_app.tsx、_document.tsx—— 这些属于 Pages Router- 来自
next/router的useRouter—— 请使用next/navigation代替 next/head—— 请使用generateMetadata导出- 不必要地将 Server Components 包裹在
"use client"中