🗞️ Claude Code 日报/Next.js 项目里用 Claude Code:App Router 时代的最佳实践
1 分钟阅读20 天内

Next.js 项目里用 Claude Code:App Router 时代的最佳实践

#claude-code#nextjs#react#frontend#workflow𝕏 分享

前端项目用 Claude Code 有特定的挑战:框架版本变化快、client/server 边界容易搞错、CSS 模块复杂。以下是在 Next.js App Router 项目里最有效的使用方式。

让 Claude 了解你的 Next.js 版本:

# 先让 Claude 了解环境
claude "我们用 Next.js $(cat package.json | grep next | head -1),
App Router 架构。
接下来的修改需要遵循:
1. Server Component 优先(不用 'use client' 除非必要)
2. 数据获取在 Server Component 里做
3. 客户端交互用 Client Component 封装

之后我会给你修改任务。"

常见的 App Router 错误预防:

claude "在 app/ 目录里找出所有:
1. 不必要地标注了 'use client' 的组件(没有用 useState/useEffect/事件处理)
2. 在 Client Component 里直接调用数据库或文件系统的代码
3. 把大型依赖引入了客户端 bundle

列出文件和问题原因。"

Server Action 的生成:

claude "为用户表单(components/UserForm.tsx)添加 Server Action:
- 表单提交触发 Server Action
- Server Action 在服务端验证数据,存入数据库
- 错误信息通过 useFormState 传回客户端
- 成功后使用 revalidatePath 更新缓存

参考现有的 actions/order.ts 文件的风格。"

Route Handler 生成:

claude "创建 app/api/notifications/route.ts:
- GET:返回当前用户的通知列表(需要认证)
- POST:标记通知为已读(接收通知 ID 数组)
- 用我们的标准错误格式(参考 app/api/users/route.ts)
- 加 rate limiting(参考现有的 middleware.ts)"

Metadata 和 SEO:

claude "为 app/products/[slug]/page.tsx 添加完整的 Metadata:
- generateMetadata 函数从数据库获取产品信息
- 包含 OpenGraph 和 Twitter Card
- 图片用 /api/og 动态生成
- 参考 app/blog/[slug]/page.tsx 的实现风格"

性能优化:

claude "分析 app/ 目录的组件,找出可以优化的地方:
1. 可以转为 Suspense + loading.tsx 的数据获取
2. 可以用 dynamic() 懒加载的重型组件
3. 图片没有用 next/image 的地方
4. 字体没有用 next/font 的地方

给出文件列表和具体改法。"

测试 Next.js 组件:

claude "为 components/ProductCard.tsx 写测试:
- 用 @testing-library/react
- 测试正常渲染
- 测试 loading 状态
- 测试错误状态
- 测试用户交互(加入购物车按钮)

不要 mock 不必要的东西。如果组件需要 Provider,用 test-utils.tsx 里的 wrapper。"

最重要的 App Router 认知:

告诉 Claude "这是 App Router 项目"还不够——要告诉它你用的具体版本,因为 Next.js 每个版本都有 breaking changes,Claude 的训练数据不一定包含最新的 API。遇到不确定的 API,先查 node_modules/next/dist/ 里的实际代码,不要依赖 Claude 的记忆。

← 上一篇Claude Code 生成代码的边界:什么时候你必须自己动手下一篇 →理解陌生代码库:用 Claude Code 做代码考古