本教程面向有基本编程基础但从未用过Claude Code的开发者。你将学会如何用Claude Code完成一个完整项目的全生命周期——从创建空目录、初始化配置、搭建项目骨架、迭代开发功能,到最终生成可部署产物。教程以一个"任务管理API + 前端"全栈应用为实战案例,每个步骤都给出具体命令和预期输出。
适用人群:了解基础命令行操作、会写简单代码、但希望借助AI工具大幅提升开发效率的开发者。
学习目标:完成本教程后,你将掌握Claude Code的完整开发工作流,能够独立用AI辅助完成任何中小型项目。
| 条件 | 说明 |
|---|---|
| 操作系统 | macOS、Linux或WSL2(Windows子系统) |
| Node.js | v18+(用于安装Claude Code CLI) |
| 终端 | 任意终端模拟器(iTerm2、Terminal、Windows Terminal等) |
| 账户 | Anthropic账户(有API Key或Claude Pro/Max订阅) |
| 基础知识 | 了解Git基本命令、HTTP API概念 |
安装Claude Code(如果尚未安装):
npm install -g @anthropic-ai/claude-code
验证安装:
claude --version
# 预期输出: claude-code/x.x.x (具体版本号)
Claude Code与传统AI编程助手有本质区别。传统工具(如Copilot)在你打字时给出建议,而Claude Code是一个运行在你终端中的智能代理,它能:
Claude Code支持从完全手动到完全自治的五种工作模式。初学者应从第一种开始,逐步增加自治度:
graph LR
A["Sequential<br/>顺序模式<br/>🔵 手动控制"] --> B["Operator<br/>操作员模式<br/>🟡 半自动"]
B --> C["Split & Merge<br/>拆分合并<br/>🟠 并行处理"]
C --> D["Agent Teams<br/>团队模式<br/>🔴 多Agent协作"]
D --> E["Headless<br/>无头模式<br/>⚫ 全自动"]
style A fill:#4a90d9,color:#fff
style B fill:#f5a623,color:#fff
style C fill:#e67e22,color:#fff
style D fill:#e74c3c,color:#fff
style E fill:#2c3e50,color:#fff
| 模式 | 适用场景 | 人为介入程度 |
|---|---|---|
| Sequential(顺序) | 一步步执行,每步确认 | 高——每步都要批准 |
| Operator(操作员) | Claude做具体操作,人做决策 | 中——只审批关键操作 |
| Split & Merge(拆分合并) | 多个独立子任务并行 | 中——拆分时介入,合并时审查 |
| Agent Teams(团队) | 大型项目多模块并行开发 | 低——设定目标后自主执行 |
| Headless(无头) | CI/CD流水线、批量任务 | 无——完全无人值守 |
新手建议:前三个项目使用Sequential模式,充分理解Claude Code的行为模式后再逐步放手。
# 创建项目目录
mkdir taskflow-app && cd taskflow-app
# 初始化Git仓库(Claude Code对Git有深度集成)
git init
# 启动Claude Code
claude
首次启动会看到欢迎界面和认证提示。按照指引完成Anthropic账户认证。
进入Claude Code交互界面后,第一条命令应该是:
> /init
/init 命令会分析当前目录结构,自动生成 CLAUDE.md 文件。这个文件是Claude Code理解你项目的"大脑"——它告诉AI你的项目规则、技术栈偏好和代码规范。
对于空目录,/init 会生成一个基础模板:
# CLAUDE.md(/init 自动生成的基础版本)
## 项目概述
TaskFlow - 一个任务管理全栈应用
## 技术栈
- 后端: Node.js + Express + TypeScript
- 前端: React + Vite + TypeScript
- 数据库: SQLite(开发阶段)
- 测试: Vitest
## 开发规范
- 使用TypeScript严格模式
- 遵循RESTful API设计原则
- 提交信息使用Conventional Commits格式
- 代码必须有对应的测试
## 项目结构
taskflow-app/ ├── server/ # 后端API服务 ├── client/ # 前端React应用 ├── CLAUDE.md # 项目配置 └── README.md # 项目文档
## 构建与运行命令
- 安装依赖: `npm install`
- 启动后端: `cd server && npm run dev`
- 启动前端: `cd client && npm run dev`
- 运行测试: `npm test`
- 构建生产版本: `npm run build`
/init 生成的是基础模板,你需要补充项目特定信息。告诉Claude Code:
> 请帮我完善CLAUDE.md,这是一个任务管理应用,包含以下功能:
> - 用户注册和登录
> - 任务的CRUD操作
> - 任务分类和标签
> - 简单的看板视图
>
> 后端用Express + SQLite,前端用React。
> 代码风格遵循Airbnb规范,使用pnpm作为包管理器。
Claude Code会更新 CLAUDE.md,加入更详细的技术规范和架构约定。
常见问题:
| 问题 | 解决方案 |
|---|---|
/init 后CLAUDE.md内容太少 |
手动补充或让Claude Code根据你的需求描述生成详细版本 |
忘记运行 /init |
随时可以运行,不影响已有代码 |
| CLAUDE.md应该放在哪里? | 项目根目录(最重要)、~/.claude/CLAUDE.md(全局偏好) |
不要让Claude Code直接写代码,先用Plan模式讨论架构:
> 进入计划模式。我要搭建一个任务管理全栈应用,请帮我设计项目结构、
> API路由设计和数据库表结构。用SQLite作为数据库,不需要ORM。
Claude Code会进入Plan模式,输出一份详细的技术方案。你可以审查、修改、迭代直到满意。
flowchart TD
A["用户描述需求"] --> B["Claude Code<br/>进入Plan模式"]
B --> C["输出技术方案"]
C --> D{"用户审查"}
D -->|"满意"| E["退出Plan模式<br/>开始实施"]
D -->|"需要调整"| F["用户反馈修改意见"]
F --> B
style A fill:#4a90d9,color:#fff
style E fill:#27ae60,color:#fff
方案确认后,一次性生成完整项目结构:
> 请根据刚才的计划,搭建完整的项目骨架。包括:
> 1. server/ 目录:Express应用、路由、数据库初始化脚本
> 2. client/ 目录:React + Vite 应用
> 3. 根目录:package.json、tsconfig.json、.gitignore
> 4. 每个目录都需要独立的package.json
>
> 先创建文件结构和配置文件,不要写具体业务逻辑。
预期输出:Claude Code会创建如下结构:
taskflow-app/
├── CLAUDE.md
├── .gitignore
├── package.json # 根monorepo配置
├── server/
│ ├── package.json
│ ├── tsconfig.json
│ ├── src/
│ │ ├── index.ts # 入口文件
│ │ ├── routes/ # 路由定义
│ │ ├── middleware/ # 中间件
│ │ └── db/ # 数据库相关
│ └── tests/
├── client/
│ ├── package.json
│ ├── tsconfig.json
│ ├── vite.config.ts
│ ├── index.html
│ └── src/
│ ├── App.tsx
│ ├── main.tsx
│ ├── components/
│ ├── pages/
│ └── api/
└── shared/ # 前后端共享类型
└── types.ts
> 安装所有依赖,确保项目能正常启动
Claude Code会运行:
# 根目录
pnpm install
# 后端
cd server && ppm add express cors better-sqlite3
pnpm add -D typescript @types/express @types/cors @types/better-sqlite3 vitest
# 前端
cd client && pnpm add react react-dom react-router-dom
pnpm add -D @vitejs/plugin-react vite typescript vitest
常见问题:
| 问题 | 解决方案 |
|---|---|
| 依赖安装失败 | 让Claude Code检查Node版本,或切换npm镜像源 |
| TypeScript编译报错 | 告诉Claude Code具体错误信息,它会修正tsconfig.json |
| 端口冲突 | 提示Claude Code使用不同端口(如3001代替3000) |
不要一次要求所有功能。按功能模块逐步开发:
> 现在实现第一个功能模块:任务的CRUD API。
>
> 需要实现:
> - POST /api/tasks 创建任务
> - GET /api/tasks 获取任务列表
> - GET /api/tasks/:id 获取单个任务
> - PUT /api/tasks/:id 更新任务
> - DELETE /api/tasks/:id 删除任务
>
> 数据库使用SQLite,创建tasks表。包含测试。
Claude Code会:
1. 创建数据库初始化脚本(server/src/db/schema.ts)
2. 实现路由处理函数(server/src/routes/tasks.ts)
3. 注册路由到主应用(server/src/index.ts)
4. 编写API测试(server/tests/tasks.test.ts)
关键交互——Claude Code在执行过程中会请求你的许可:
Claude wants to edit server/src/db/schema.ts [Allow? y/n]
Claude wants to run: pnpm --filter server test [Allow? y/n]
对于每个操作,你可以选择: - y:允许本次操作 - n:拒绝 - Shift+Tab:切换为"允许所有同类操作"
> 运行后端测试,确认所有API测试通过。如果有错误请修复。
Claude Code会自动运行测试,分析失败原因并修复:
cd server && pnpm test
# 预期成功输出:
# ✓ POST /api/tasks - 创建任务
# ✓ GET /api/tasks - 获取任务列表
# ✓ GET /api/tasks/:id - 获取单个任务
# ✓ PUT /api/tasks/:id - 更新任务
# ✓ DELETE /api/tasks/:id - 删除任务
#
# Tests 5 passed (5)
# Time 1.2s
如果测试失败,Claude Code会显示错误分析:
# 测试失败示例:
# ✗ POST /api/tasks - 创建任务
# → Expected status 201, received 500
# → Error: Cannot read property 'title' of undefined
#
# Claude Code自动分析:
# "问题出在请求体解析中间件未正确配置。
# 我需要添加 express.json() 中间件。"
每完成一个功能模块,创建一个Git提交:
> 请查看当前的代码变更,生成合适的commit message并提交。
Claude Code会:
1. 运行 git status 和 git diff 查看变更
2. 分析变更内容
3. 生成符合Conventional Commits规范的消息
4. 执行 git add 和 git commit
# Claude Code生成的commit:
feat(server): implement task CRUD API with SQLite
- Add database schema and initialization script
- Implement RESTful endpoints for tasks
- Add input validation middleware
- Include comprehensive test suite (5 tests)
Co-Authored-By: Claude <[email protected]>
> 现在实现前端。创建一个简单的任务列表页面,包含:
> 1. 显示所有任务的列表
> 2. 添加新任务的表单
> 3. 标记任务完成/未完成的切换
> 4. 删除任务的按钮
>
> 使用React Hook管理状态,不需要引入状态管理库。
> 样式使用CSS Modules。
Claude Code会在 client/src/ 下创建:
components/TaskList.tsx — 任务列表组件components/TaskForm.tsx — 添加任务表单components/TaskItem.tsx — 单个任务项pages/Home.tsx — 首页(组合以上组件)api/tasks.ts — API调用封装> 前后端需要联调。请确保:
> 1. 后端添加CORS中间件
> 2. 前端API调用指向正确的后端地址
> 3. Vite配置代理到后端的3001端口
> 4. 两个服务能同时启动
Claude Code会配置开发代理:
// client/vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
server: {
port: 5173,
proxy: {
'/api': {
target: 'http://localhost:3001',
changeOrigin: true,
},
},
},
})
Claude Code天然支持Git Flow工作流:
> 创建feature/task-tags分支,实现任务标签功能。
Claude Code会:
git checkout -b feature/task-tags
# 然后开始实现标签功能...
用Claude Code审查自己的代码:
> 审查当前分支相对于main分支的所有变更。关注:
> - 潜在的bug
> - 性能问题
> - 安全隐患
> - 代码风格一致性
>
> 输出审查报告和改进建议。
Claude Code会生成结构化的审查报告:
## 代码审查报告
### 严重问题 (2)
1. [安全] server/src/routes/tasks.ts:45
- SQL注入风险:直接拼接用户输入
- 建议:使用参数化查询
2. [Bug] client/src/api/tasks.ts:23
- 未处理网络错误,可能导致页面崩溃
- 建议:添加try-catch和错误状态
### 改进建议 (3)
1. [性能] 任务列表缺少分页,数据量大时性能下降
2. [风格] 部分文件缺少错误类型定义
3. [可维护] API基础URL应提取为环境变量
> 将feature/task-tags合并到main。如果有冲突请帮我解决。
Claude Code会分析冲突双方的内容,提出合并方案并征求你的确认。
gitgraph
commit id: "init"
commit id: "feat: CRUD API"
branch feature/task-tags
checkout feature/task-tags
commit id: "feat: tag model"
commit id: "feat: tag API"
commit id: "test: tag tests"
checkout main
commit id: "feat: frontend list"
merge feature/task-tags id: "merge: task tags"
commit id: "chore: update CLAUDE.md"
> 分析当前代码的测试覆盖率,为缺少测试的模块补充测试。
> 重点关注API端点和关键业务逻辑。
Claude Code会运行覆盖率分析:
cd server && pnpm test -- --coverage
# 输出:
# File | % Stmts | % Branch | % Funcs | % Lines
# ----------------|---------|----------|---------|--------
# All files | 72.3% | 65.1% | 80.0% | 71.8%
# routes/tasks.ts| 95.0% | 88.9% | 100.0% | 95.0%
# routes/tags.ts | 45.0% | 30.0% | 60.0% | 43.5% ← 需要补充
# middleware/ | 60.0% | 50.0% | 75.0% | 58.3% ← 需要补充
然后自动为覆盖不足的模块生成测试。
> 用Vitest + fetch API为整个应用写端到端集成测试。
> 测试场景:创建任务 → 添加标签 → 筛选 → 完成任务 → 删除任务
> 配置生产构建流程:
> 1. 后端编译为JavaScript
> 2. 前端构建为静态文件
> 3. Express服务前端静态文件(生产模式)
> 4. 创建启动脚本
Claude Code会配置构建流程:
// 根目录 package.json
{
"scripts": {
"build": "pnpm --filter server build && pnpm --filter client build",
"start": "node server/dist/index.js",
"dev": "concurrently \"pnpm --filter server dev\" \"pnpm --filter client dev\""
}
}
> 添加环境变量支持:
> - DATABASE_PATH:数据库文件路径
> - PORT:服务端口
> - NODE_ENV:运行环境
> 创建 .env.example 文件作为模板
> 为这个应用创建Dockerfile和docker-compose.yml。
> 多阶段构建,最终镜像使用Alpine Linux。
Claude Code生成:
# Dockerfile(Claude Code生成)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY . .
RUN pnpm run build
FROM node:20-alpine AS runner
WORKDIR /app
COPY --from=builder /app/server/dist ./dist
COPY --from=builder /app/client/dist ./public
COPY --from=builder /app/package.json ./
RUN corepack enable && pnpm install --prod --frozen-lockfile
EXPOSE 3001
CMD ["node", "dist/index.js"]
以下是用Claude Code完成整个TaskFlow项目的完整流程图:
flowchart TB
subgraph Phase1["阶段一:初始化(15分钟)"]
A1["mkdir taskflow-app"] --> A2["git init"]
A2 --> A3["claude 启动"]
A3 --> A4["/init 生成CLAUDE.md"]
A4 --> A5["完善项目配置"]
end
subgraph Phase2["阶段二:架构设计(10分钟)"]
B1["Plan模式讨论架构"] --> B2["确定技术栈"]
B2 --> B3["设计API路由"]
B3 --> B4["设计数据库表"]
B4 --> B5["审查并确认方案"]
end
subgraph Phase3["阶段三:骨架搭建(10分钟)"]
C1["生成项目目录结构"] --> C2["创建配置文件"]
C2 --> C3["安装依赖"]
C3 --> C4["验证项目能启动"]
C4 --> C5["Git初始提交"]
end
subgraph Phase4["阶段四:功能迭代(每个功能15-20分钟)"]
D1["描述功能需求"] --> D2["Claude实现代码"]
D2 --> D3["运行测试"]
D3 --> D4{"测试通过?"}
D4 -->|"是"| D5["审查变更"]
D4 -->|"否"| D6["Claude自动修复"]
D6 --> D3
D5 --> D7["Git提交"]
D7 --> D8["下一个功能"]
end
subgraph Phase5["阶段五:质量与部署(15分钟)"]
E1["代码审查"] --> E2["补充测试"]
E2 --> E3["生产构建配置"]
E3 --> E4["Docker化"]
E4 --> E5["部署就绪"]
end
Phase1 --> Phase2 --> Phase3 --> Phase4 --> Phase5
style Phase1 fill:#3498db,color:#fff
style Phase2 fill:#2ecc71,color:#fff
style Phase3 fill:#f39c12,color:#fff
style Phase4 fill:#e74c3c,color:#fff
style Phase5 fill:#9b59b6,color:#fff
每个阶段的典型时间投入:
| 阶段 | 人工操作 | AI操作 | 总耗时 |
|---|---|---|---|
| 初始化 | 5分钟 | 10分钟 | ~15分钟 |
| 架构设计 | 10分钟(审查为主) | 5分钟 | ~15分钟 |
| 骨架搭建 | 3分钟 | 7分钟 | ~10分钟 |
| 功能迭代(每个) | 5-8分钟 | 10-15分钟 | ~20分钟 |
| 质量与部署 | 5分钟 | 10分钟 | ~15分钟 |
一个包含5-6个功能模块的中小型项目,总开发时间约 2-3小时(传统开发需要1-2天)。
Claude Code的上下文窗口有限。如果对话过长,理解能力会下降。解决方法:
/compact 命令压缩上下文claude(CLAUDE.md会自动加载)模糊描述 → 模糊结果。好的提示词模式:
❌ "帮我写个登录功能"
✅ "实现用户登录功能:
- POST /api/auth/login 端点
- 接受 {email, password} 请求体
- 返回JWT token
- 密码用bcrypt加密存储
- 添加单元测试和集成测试"
不要一次性要求太多功能。遵循"描述→实现→验证→提交"的循环:
> 实现任务标签功能的数据库部分 ← 先做数据层
> (验证后)
> 实现标签的API端点 ← 再做API层
> (验证后)
> 实现标签的前端展示 ← 最后做展示层
对于复杂的架构决策,始终先进入Plan模式:
> /plan 我想添加WebSocket实时通知功能,请先设计方案
审查方案后再执行,避免大规模返工。
| 陷阱 | 症状 | 解决方案 |
|---|---|---|
| 一次性要求太多 | 代码质量下降、逻辑混乱 | 分功能模块逐步实现 |
| 不审查直接接受 | 潜入隐藏bug | 每次变更后运行测试 |
| 上下文过长 | Claude"忘记"之前的规定 | 定期 /compact 或重启会话 |
| CLAUDE.md太简单 | 代码风格不一致 | 投入时间完善配置文件 |
| 跳过测试步骤 | 后期bug爆发 | 每个功能必须附带测试 |
# 1. 项目初始化
mkdir my-project && cd my-project
git init
claude
> /init
# 2. 架构规划
> 进入计划模式。描述需求和技术栈...
# 3. 骨架搭建
> 根据计划创建项目结构...
# 4. 功能迭代(重复以下步骤)
> 实现[具体功能]...
> 运行测试确认通过
> 查看变更并提交
# 5. 上下文管理(在对话过长时)
> /compact
# 6. 代码审查
> 审查所有变更,输出审查报告
# 7. 生产构建
> 配置生产构建和部署
| 评估维度 | 说明 |
|---|---|
| 适合训练营类型 | 全栈开发入门营、AI辅助编程速成营、前端/后端转型营 |
| 学员基础要求 | 能使用终端、了解基本Git命令、至少掌握一门编程语言 |
| 预计教学时长 | 3-4小时(含实操练习),可作为半天工作坊 |
| 教学建议 | 前1小时讲解概念+演示,后2-3小时学员跟做实战项目 |
| 考核方式 | 学员独立完成一个包含3个功能模块的全栈应用,所有测试通过 |
| 扩展方向 | 可衔接Skills开发、MCP服务器开发、自动化Hooks等进阶课程 |
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
