Skills nextjs-project-standard
Next.js 14+ 项目规范,涵盖 App Router、SSR/SSG、流式渲染、路由与布局、数据获取、中间件、元数据与 SEO。当用户在 Next.js 项目中创建、修改页面或模块时自动激活。
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bovinphang/nextjs-project-standard" ~/.claude/skills/openclaw-skills-nextjs-project-standard && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/bovinphang/nextjs-project-standard" ~/.openclaw/skills/openclaw-skills-nextjs-project-standard && rm -rf "$T"
manifest:
skills/bovinphang/nextjs-project-standard/SKILL.mdsource content
Next.js 项目规范
适用于使用 Next.js 14+ 与 App Router 的仓库。
适用场景
- 新建或修改 App Router 页面
- 配置 SSR / SSG / ISR
- 使用流式渲染、Suspense
- 数据获取、缓存、中间件
- 元数据与 SEO
项目结构
src/ ├── app/ # App Router │ ├── layout.tsx # 根布局 │ ├── page.tsx # 首页 │ ├── loading.tsx # 全局 loading UI │ ├── error.tsx # 全局错误边界 │ ├── not-found.tsx # 404 │ ├── globals.css │ │ │ ├── (auth)/ # 路由组 │ │ ├── login/ │ │ │ └── page.tsx │ │ └── register/ │ │ └── page.tsx │ │ │ ├── (dashboard)/ # 仪表盘路由组 │ │ ├── layout.tsx # 共享布局 │ │ ├── dashboard/ │ │ │ └── page.tsx │ │ └── users/ │ │ ├── page.tsx │ │ └── [id]/ │ │ └── page.tsx │ │ │ └── api/ # API Routes │ └── users/ │ └── route.ts │ ├── components/ # 共享组件 ├── lib/ # 工具、配置 ├── hooks/ ├── services/ └── types/
渲染模式
| 模式 | 使用场景 | 实现方式 |
|---|---|---|
| SSR | 动态、需实时数据 | 默认, 不缓存或 |
| SSG | 静态内容 | + 静态 |
| ISR | 定期更新 | 或 |
| CSR | 客户端交互 | + 或 SWR/React Query |
数据获取
- 服务端组件:直接
或async
,不暴露fetchuseEffect - 客户端组件:
+useEffect
,或 SWR / React QueryuseState - 优先在服务端获取数据,减少客户端水合
- 使用
和 Suspense 包裹异步区块,提供流式体验loading.tsx
路由与布局
- 路由组
不改变 URL,只影响布局(auth) - 动态路由
配合[id]
做 SSGgenerateStaticParams
包裹子路由,共享 UI 与布局layout.tsx
为叶子路由,不可嵌套page.tsx
中间件
- 放在
根目录middleware.ts - 用于鉴权、重定向、rewrite、Header 修改
- 尽量短小,避免阻塞请求
元数据与 SEO
- 使用
或metadata
导出generateMetadata - 支持
、title
、description
、openGraph
等twitter - 动态路由用
生成generateMetadata(params)
强约束
- 服务端组件默认,仅在需要客户端交互时加
'use client' - 不在服务端组件中直接使用
、useState
、浏览器 APIuseEffect - 敏感逻辑(如鉴权)放在服务端或 API Route,不暴露在客户端
- 图片使用
,字体使用next/imagenext/font