在上一篇技巧分享中,我们探讨了Claude Code的几大核心能力。今天,我们将直接进入一个真实的Node.js开发场景,看看如何借助Claude Code,从一个明确的需求开始,一步步交付一个完整、可用的功能模块。如果你也在寻找提升日常开发效率的方法,不妨跟随本文的思路实践一番。
本文优化发布自云栈社区,一个专注于实战经验分享与技术讨论的开发者社区。
场景设定
假设你接手了一个典型的数据类需求:为现有项目新增一个“用户活跃度排行榜”接口。
具体需求如下:
- 统计每个用户过去7天的操作次数。
- 返回活跃度最高的前10名用户及其得分。
- 对结果进行缓存,缓存时间为5分钟。
这涉及到数据库查询、业务逻辑计算以及缓存处理。你决定尝试全程使用Claude Code来完成这项任务。
第一步:用 CLAUDE.md 建立项目上下文
Claude Code真正强大的地方,在于它能持续记忆项目的整体约束,而非仅仅响应单次提问。
为此,你需要在项目根目录创建一个名为 CLAUDE.md 的文件:
# Claude Code 项目配置
## 技术栈
- Runtime: Node.js 20+
- 数据库: PostgreSQL (pg 驱动)
- 缓存: Redis
- ORM: 无,原生 sql
- 测试框架: Jest
## 代码规范
- 路径: src/services/xxx.js
- 错误处理: 统一抛出自定义异常类
- 日志: 使用项目内置 logger
- 测试覆盖率目标: 80%+
## 项目结构
- src/
- routes/ # 路由层
- services/ # 业务逻辑层 ← 新接口放这里
- models/ # 数据模型
- utils/ # 工具函数
- config/ # 配置文件
为什么这一步至关重要?
如果没有 CLAUDE.md,Claude Code每次对话都像是第一次认识你的项目。有了它之后,Claude Code会自动加载项目的技术栈、目录规范和代码风格。这意味着你无需在每次交互中重复解释基础信息,沟通效率将大大提升。
第二步:描述需求,让Claude Code理解任务
现在,你可以在终端中直接向Claude Code描述需求:
claude-code “在 src/services/ 下新增一个 leaderboard.js,统计用户过去7天活跃度排行,返回TOP10,包含缓存逻辑”
基于 CLAUDE.md 提供的上下文,Claude Code会生成一份符合你项目规范的初始代码草案。
第三步:审查与迭代——核心工作流
Claude Code很少能一次性生成完美的生产级代码。高质量的输出依赖于高质量的多轮对话,这个过程的核心在于你如何提问和引导。
第一轮:检查代码结构与错误处理
“检查一下这个函数的错误处理是否完整,每个分支都有对应的异常捕获吗?”
Claude Code会分析每个函数,指出缺失的 try/catch 块,以及可能出现的未处理的 null 或 undefined 场景。
第二轮:优化查询性能
“users 操作日志表可能很大,这个查询有没有做索引优化?检查 SQL 执行计划,解释为什么这样写。”
一个好的追问能引导Claude Code暴露它可能忽略的性能问题,例如缺失WHERE条件、潜在的全表扫描或忘记加LIMIT。
第三轮:补充边界情况
“如果排行榜里操作次数都是0怎么办?TOP10返回空数组还是报错?边界情况:
1. 用户表为空
2. 缓存过期瞬间大量请求
3. Redis 连接失败时的降级策略”
对边界情况的思考,是区分“能用”的代码和“健壮”的生产级代码的关键。Claude Code能根据你的描述,补充完整的防御性编程逻辑。
第四轮:审查安全漏洞
“检查这段代码有没有 SQL 注入、XSS、敏感信息泄露风险,特别是用户输入经过的地方。”
第五轮:检查代码风格一致性
“这段代码有没有不符合我们代码规范的地方?比如变量命名、函数长度、重复代码块?”
自动化审查:使用内置 /review 命令
如果你觉得手动发起每一轮审查太繁琐,可以使用Claude Code的内置 /review 命令,让它自动对你的代码改动进行全面检查:
# 让 Claude Code 审查当前所有改动
claude-code /review
# 只审查某个文件
claude-code /review src/services/leaderboard.js
这相当于为你的代码安排了一位24小时在线的Code Reviewer。在每次提交(commit)前运行一遍,能捕捉到大量人工审查容易遗漏的问题。
你甚至可以配置预提交钩子(pre-commit hook),让审查流程自动化:
# 安装 pre-commit 钩子
claude-code --setup-git-hook
启用后,每次执行 git commit 之前,Claude Code都会自动扫描你的改动。如果发现问题,它会提示你修复后再提交,有效阻止“带病”代码进入版本库。
进阶技巧:让Claude Code编写并运行测试
许多开发者只让Claude Code编写业务逻辑,测试却自己手动完成。其实,测试工作同样可以交给它,并且可以实现“生成+执行+修复”的一体化流程。
技巧一:生成完整的单元测试用例
“为 leaderboard.js 中的 getWeeklyTopUsers 函数写完整的单元测试,覆盖:
1. 正常返回 TOP10 数据
2. 用户表为空时返回空数组
3. 缓存命中场景(mock Redis)
4. 数据库异常时抛出自定义错误
5. 结果按活跃度降序排列”
Claude Code会根据要求,生成符合Jest语法的测试文件,通常保存在 __tests__/leaderboard.test.js。
技巧二:自动运行测试并修复失败用例
“运行这些测试,如果失败的话分析原因并修复。”
Claude Code会执行 jest 或 npm test 命令,然后根据测试输出的错误信息,直接修改测试代码或业务逻辑代码,直到所有测试用例通过。这个过程基本自动化,你只需确认最终结果。
技巧三:用 .claude/commands 定义自动化测试模板
你可以将常用的复杂命令流程定义为模板,避免重复输入。例如,在 .claude/commands/test-coverage.md 中定义:
# 全量测试 + 覆盖率检查
每次要求测试时,执行以下步骤:
1. 运行测试:npm test -- --coverage
2. 检查覆盖率是否 >= 80%
3. 如果覆盖率不足,指出哪些函数/分支未被覆盖
4. 为这些未覆盖的分支补充测试用例
5. 再次运行测试确认全部通过
定义之后,下次你只需要简单地说:
“用测试覆盖率模板测试 leaderboard.js”
进阶技巧:用 .claude/commands 标准化开发流程
对于团队内经常重复的开发任务,你可以通过定义命令模板来确保一致性。
创建 Service 的标准模板
在 .claude/commands/create-service.md 中定义:
# 创建新 Service
每次在 src/services/ 下新增服务文件时,遵循以下结构:
## 必须包含
- 输入参数类型注释(JSDoc)
- 完整的 JSDoc(描述、参数、返回值)
- try/catch 错误处理,统一抛出 src/errors/ 下的自定义异常
- 单元测试文件: __tests__/xxx.test.js(覆盖率 80%+)
## 禁止
- 禁止直接拼接 SQL 字符串,必须用参数化查询
- 禁止 console.log,统一使用 logger
- 禁止 async/await 混用,必须统一风格
## 输出格式
1. 先写业务逻辑文件
2. 再写对应的测试文件
3. 运行测试确认通过
4. 输出 git commit message(conventional commits)
其他常用命令模板示例
| 模板名 |
用途 |
触发关键词 |
create-api.md |
新建 REST API |
“创建新接口” |
create-service.md |
新建 Service |
“创建新 Service” |
security-audit.md |
安全审计 |
“安全审计” |
refactor-async.md |
异步代码重构 |
“重构异步代码” |
test-coverage.md |
覆盖率测试 |
“测试覆盖率” |
进阶技巧:用 MCP 扩展 Claude Code 的能力边界
Claude Code支持 Model Context Protocol (MCP),可以连接外部工具和数据源,从而突破自身限制,执行更复杂的操作。
场景:直接查询生产数据库
安装PostgreSQL的MCP Server后,你可以用自然语言直接查询数据库:
“帮我查一下过去7天活跃度最高的10个用户,直接用 SQL 查询 production 数据库”
Claude Code会生成安全的查询SQL,执行并返回结果,你无需手动打开任何数据库客户端。
场景:自动操作 GitHub 仓库
安装GitHub MCP Server后,你可以这样操作:
“帮我创建一个 PR,把 leaderboard 功能合并到 main 分支,标题写 ‘feat: add weekly leaderboard API’,描述包含改动内容”
场景:连接更多工具
MCP生态正在快速丰富,支持连接Notion、Figma、Jira等大量第三方工具,这让Claude Code的能力得以无限扩展。
第四步:提交代码,生成规范的 Commit Message
当所有代码和测试都完成后,可以让Claude Code帮你完成提交:
“帮我用 git commit 提交这个改动,commit message 要符合 conventional commits 规范”
Claude Code会根据改动内容,自动生成专业的提交信息:
feat(services): add weekly user leaderboard API
- GET /api/leaderboard/top10 endpoint
- 7-day activity tracking with Redis cache (5min TTL)
- PostgreSQL query with proper indexing
- Jest unit tests for getWeeklyTopUsers (80%+ coverage)
Closes: #123
完整工作流全景图
| 阶段 |
你的角色 |
Claude Code 的角色 |
| 建立上下文 |
编写 CLAUDE.md |
读取并记忆项目规范 |
| 初次生成 |
输入自然语言需求 |
生成符合规范的初始代码 |
| 代码审查 |
提出具体问题或使用 /review 命令 |
分析、指出问题并修改优化 |
| 测试 |
描述测试场景,确认执行 |
生成测试用例,自动运行并修复失败用例 |
| 版本控制 |
确认提交内容 |
生成规范 Commit Message,可集成Git操作 |
通过这样一个从需求到上线的完整流程演示,我们可以看到,Claude Code并非一个简单的代码补全工具,而是一个能够深度融入开发生命周期的智能协作者。关键在于开发者如何通过清晰的上下文配置、结构化的提问和流程化的命令,来引导它发挥最大价值。希望这个实战案例能为你使用AI辅助编程带来新的启发。