本教程面向零基础开发者,手把手教你用 Claude Code 驱动开发一个完整的 React 19 + Vite 项目。你将掌握 Claude Code 的安装认证、核心命令、权限管理、CLAUDE.md 配置,最终交付一个可部署的任务管理应用。适合希望用 AI 编程工具提升效率的前端新手和全栈初学者。
| 条件 | 说明 |
|---|---|
| 操作系统 | macOS / Linux / Windows (WSL2) |
| Node.js | >= 18.x(推荐 LTS 版本) |
| 包管理器 | npm(随 Node.js 安装) |
| 编辑器 | VS Code(可选但推荐) |
| 账户 | Anthropic Claude Pro / Max / Team 或 API Key |
| 基础知识 | 了解 HTML/CSS/JavaScript 基础即可 |
确保 Node.js 和 npm 已安装:
node --version # 应输出 v18.x 或更高
npm --version # 应输出 9.x 或更高
如果没有安装 Node.js,推荐使用 nvm 管理版本:
# macOS / Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
Windows 用户建议先安装 WSL2(Windows Subsystem for Linux),在 WSL 内操作:
wsl --install
# 重启后打开 Ubuntu 终端继续
Claude Code 有两种安装方式——npm 全局安装和原生安装器:
方式一:npm 全局安装(推荐)
npm install -g @anthropic-ai/claude-code
方式二:macOS Homebrew 安装
brew install claude-code
安装完成后验证:
claude --version
# 应输出类似 claude-code/1.x.x
常见问题:
| 问题 | 解决方案 |
|---|---|
EACCES: permission denied |
不要用 sudo,修复 npm 全局目录权限:mkdir ~/.npm-global && npm config set prefix '~/.npm-global',然后添加到 PATH |
command not found: claude |
确认 npm 全局 bin 目录在 PATH 中:npm config get prefix 检查路径 |
| WSL 内网络连接失败 | 确认 WSL2 可以访问外网:ping google.com,如不行检查 /etc/resolv.conf |
claude
首次运行会启动浏览器进行 OAuth 认证。根据你的账户类型:
~/.claude/ 目录ANTHROPIC_API_KEY:export ANTHROPIC_API_KEY="sk-ant-api03-..."
为避免每次设置,写入 shell 配置文件:
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-..."' >> ~/.bashrc
source ~/.bashrc
认证成功后,终端会显示 Claude Code 的交互式界面(REPL),光标闪烁等待输入。
在终端中创建项目目录并启动 Claude Code:
mkdir ~/taskflow && cd ~/taskflow
claude
在 Claude Code REPL 中输入:
> 帮我用 Vite 创建一个 React 19 项目,使用 TypeScript 模板,项目名叫 taskflow
Claude Code 会执行类似以下命令:
npm create vite@latest . -- --template react-ts
npm install
预期输出:
✔ 帮我用 Vite 创建一个 React 19 项目...
> Running: npm create vite@latest . -- --template react-ts
> Running: npm install
✅ 项目已创建,React 19 + TypeScript + Vite 就绪
Claude Code 在执行每一步之前都会请求你的确认。你会看到工具调用的审批提示——按 y 或 Enter 同意。
Claude Code 的 REPL 有三种输入模式:
graph TD
A[Claude Code REPL] --> B[普通输入模式]
A --> C[Shift+Enter: 多行输入]
A --> D[斜杠命令: /xxx]
B --> B1[直接提问或下指令]
C --> C1[粘贴代码块/多步指令]
D --> D1[执行内置命令]
D --> D2[/clear /compact /init]
D --> D3[/model /review /vim]
核心快捷键速查:
| 快捷键 | 功能 |
|---|---|
Enter |
发送消息 |
Shift+Enter |
插入新行(多行输入) |
Escape |
取消当前操作/中断生成 |
Ctrl+C |
中断 Claude 正在执行的工具调用 |
↑ / ↓ |
浏览历史消息 |
Ctrl+L |
清屏 |
提示: 如果你的终端不支持
Shift+Enter(常见于某些终端模拟器),可以在~/.claude/settings.json中配置:json { "terminal": { "shiftEnterNewline": true } }
在 Claude Code 中验证 React 版本:
> 检查 package.json,确认 React 版本是 19.x,如果不是就升级
React 19 的关键特性包括:Actions、useFormStatus、useOptimistic、Server Components(需要框架支持)、改进的 ref 作为 prop 等。
CLAUDE.md 是 Claude Code 的"项目说明书"。每次会话开始时,Claude Code 会自动读取它,理解项目的架构、约定和偏好,从而给出更精准的代码建议。
让 Claude Code 自动生成初始配置:
> 运行 /init 生成项目配置文件
或者手动创建 ~/taskflow/CLAUDE.md:
# TaskFlow - 任务管理应用
## 技术栈
- React 19 + TypeScript
- Vite 构建工具
- CSS Modules 样式方案
- Vitest 单元测试
## 项目结构
- `src/components/` - React 组件,每个组件一个目录
- `src/hooks/` - 自定义 Hooks
- `src/types/` - TypeScript 类型定义
- `src/utils/` - 工具函数
## 编码规范
- 使用函数式组件 + Hooks
- 组件文件名使用 PascalCase
- 工具函数文件名使用 camelCase
- CSS 类名使用 BEM 命名
- 所有组件必须有 TypeScript 类型
## 命令
- `npm run dev` - 启动开发服务器
- `npm run build` - 构建生产版本
- `npm run test` - 运行测试
- `npm run lint` - 代码检查
Claude Code 的配置系统有五个层级,优先级从高到低:
graph BT
A["CLAUDE.md<br/>(项目根目录)"] -->|最高优先级| B[".claude/rules/*.md<br/>(模块化规则)"]
B --> C["~/.claude/CLAUDE.md<br/>(全局用户配置)"]
C --> D[".claude/settings.json<br/>(项目设置)"]
D -->|最低优先级| E["~/.claude/settings.json<br/>(全局设置)"]
style A fill:#4CAF50,color:#fff
style B fill:#66BB6A,color:#fff
style C fill:#81C784,color:#fff
style D fill:#A5D6A7,color:#333
style E fill:#C8E6C9,color:#333
在 Claude Code REPL 中描述需求:
> 设计一个任务管理应用的数据模型。任务(Task)有以下属性:
> - id: 唯一标识
> - title: 任务标题
> - description: 任务描述(可选)
> - status: 待办/进行中/已完成
> - priority: 高/中/低
> - createdAt: 创建时间
> - updatedAt: 更新时间
>
> 请创建 TypeScript 类型定义文件 src/types/task.ts
Claude Code 生成的代码大致如下:
// src/types/task.ts
export type TaskStatus = 'todo' | 'in-progress' | 'done';
export type TaskPriority = 'high' | 'medium' | 'low';
export interface Task {
id: string;
title: string;
description?: string;
status: TaskStatus;
priority: TaskPriority;
createdAt: string;
updatedAt: string;
}
export type CreateTaskInput = Omit<Task, 'id' | 'createdAt' | 'updatedAt'>;
export type UpdateTaskInput = Partial<CreateTaskInput> & Pick<Task, 'id'>;
> 创建一个 useTasks 自定义 Hook,管理任务的 CRUD 操作。
> 使用 useState 管理状态,支持添加、删除、更新、筛选任务。
> 初始数据包含 3 个示例任务。文件放在 src/hooks/useTasks.ts
这个指令展示了 Claude Code 的核心优势——你只需描述 "做什么",它负责 "怎么做"。
接下来逐个构建 UI 组件:
> 创建以下组件,全部使用 CSS Modules:
> 1. TaskBoard - 看板布局,三列展示不同状态的任务
> 2. TaskCard - 单个任务卡片,显示标题、优先级标签、操作按钮
> 3. TaskForm - 添加/编辑任务的表单,包含标题、描述、优先级选择
> 4. FilterBar - 筛选栏,按优先级和状态筛选任务
>
> 每个组件一个目录,包含 index.tsx 和 styles.module.css
> 主入口 App.tsx 组装所有组件
Claude Code 会一次性创建多个文件,每个文件创建前都会请求确认。你可以逐个审查,也可以在权限设置中开放文件写入权限。
权限控制提示: 如果不想每次确认,可以临时允许:
> 允许在 src/components/ 目录下创建文件,不需要每次确认
或者在 .claude/settings.json 中配置:
{
"permissions": {
"allow": [
"Edit(src/**)",
"Write(src/**)",
"Bash(npm run *)"
]
}
}
> 为 TaskCard 添加以下交互:
> 1. 点击卡片展开详情(使用 React 19 的 <details> 原生支持)
> 2. 拖拽排序功能(用 HTML5 Drag and Drop API)
> 3. 删除前弹出确认对话框
> 4. 状态切换时有过渡动画
> 启动开发服务器,打开浏览器看看效果
Claude Code 会执行:
npm run dev
预期输出:
VITE v6.x.x ready in xxx ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
在浏览器中访问 http://localhost:5173/ 即可看到应用。
| 命令 | 用途 | 使用频率 |
|---|---|---|
/clear |
清除当前会话上下文 | 每次切换任务时使用 |
/compact |
压缩上下文(保留摘要,释放 token) | 上下文接近上限时使用 |
/init |
生成/更新 CLAUDE.md 配置 | 新项目初始化 |
/review |
代码审查 | 提交前使用 |
/model |
切换模型(Haiku/Sonnet/Opus) | 按任务复杂度切换 |
/vim |
启用 Vim 键绑定 | Vim 用户必开 |
/mcp |
管理 MCP 服务器 | 配置外部工具时使用 |
/doctor |
诊断 Claude Code 运行状况 | 遇到问题时排查 |
Claude Code 的上下文窗口是有限的。以下是保持高效的最佳实践:
flowchart TD
A[开始新任务] --> B{任务相关吗?}
B -->|是,继续当前会话| C[直接提问]
B -->|否,全新任务| D["/clear 清除上下文"]
D --> E[开始新话题]
C --> F{上下文太长?}
F -->|是| G["/compact 压缩"]
F -->|否| H[继续工作]
G --> H
style D fill:#FF9800,color:#fff
style G fill:#FF9800,color:#fff
style A fill:#4CAF50,color:#fff
关键原则:
- 一个会话聚焦一个任务:切换大任务时用 /clear
- 长会话定期压缩:用 /compact 保留关键信息,丢弃冗余细节
- 小任务用 Haiku:/model 切换到 Haiku,省钱且快速
- 复杂架构讨论用 Opus:需要深度推理时切换
graph LR
A[任务复杂度] --> B[简单:格式化/小修改]
A --> C[中等:新功能/调试]
A --> D[复杂:架构设计/重构]
B --> E["Haiku<br/>快速且便宜"]
C --> F["Sonnet<br/>平衡之选"]
D --> G["Opus<br/>最强推理"]
style E fill:#81C784
style F fill:#FFB74D
style G fill:#E57373
与 Claude Code 交互时,好的提示词能大幅提升代码质量:
差的提示词:
> 做一个好看的页面
好的提示词:
> 创建一个任务看板页面,要求:
> - 三列布局:待办、进行中、已完成
> - 每个任务卡片显示标题、优先级色标(高红/中黄/低绿)
> - 支持拖拽移动任务到不同列
> - 响应式设计,移动端纵向排列
> - 参考 Trello 的视觉风格,圆角卡片 + 柔和阴影
提示词公式:
动作 + 具体需求列表 + 技术约束 + 视觉/风格参考
> 配置 Vitest 测试环境,安装 @testing-library/react 和 jsdom。
> 创建一个测试示例文件验证配置是否正确
> 为 useTasks Hook 编写完整的单元测试:
> - 测试初始状态包含 3 个示例任务
> - 测试添加任务
> - 测试删除任务
> - 测试更新任务状态
> - 测试按优先级筛选
> - 测试按状态筛选
> 使用 vitest 和 @testing-library/react-hooks
在提交前用 /review 命令让 Claude Code 审查代码:
> /review 检查整个项目的代码质量,重点关注:
> 1. TypeScript 类型安全性
> 2. React 19 最佳实践
> 3. 性能问题(不必要的重渲染)
> 4. 可访问性(a11y)
Claude Code 的权限系统分为三个层级:
graph TD
A[权限模式] --> B["🟢 Allow<br/>自动批准,无需确认"]
A --> C["🟡 Ask<br/>每次执行前询问"]
A --> D["🔴 Deny<br/>完全禁止"]
B --> B1["例:读取项目内文件"]
C --> C1["例:执行 npm 命令"]
D --> D1["例:删除文件、访问敏感路径"]
style B fill:#4CAF50,color:#fff
style C fill:#FF9800,color:#fff
style D fill:#F44336,color:#fff
在 .claude/settings.json 中精细控制:
{
"permissions": {
"allow": [
"Read(*)",
"Edit(src/**)",
"Write(src/**)",
"Bash(npm run *)",
"Bash(npm test *)",
"Bash(git status)",
"Bash(git diff *)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force *)",
"Read(.env*)",
"Write(.env*)"
]
}
}
Claude Code 支持操作系统级沙箱,限制文件系统和网络访问:
# 启用沙箱运行(推荐用于不信任的项目)
claude --sandbox
沙箱模式下,Claude Code 的所有文件操作和命令执行都被限制在项目目录内。
taskflow/
├── CLAUDE.md # Claude Code 项目配置
├── .claude/
│ └── settings.json # 权限和工具配置
├── index.html
├── package.json
├── tsconfig.json
├── vite.config.ts
├── src/
│ ├── main.tsx # 应用入口
│ ├── App.tsx # 根组件
│ ├── App.module.css
│ ├── types/
│ │ └── task.ts # 类型定义
│ ├── hooks/
│ │ └── useTasks.ts # 任务管理 Hook
│ ├── components/
│ │ ├── TaskBoard/
│ │ │ ├── index.tsx
│ │ │ └── styles.module.css
│ │ ├── TaskCard/
│ │ │ ├── index.tsx
│ │ │ └── styles.module.css
│ │ ├── TaskForm/
│ │ │ ├── index.tsx
│ │ │ └── styles.module.css
│ │ └── FilterBar/
│ │ ├── index.tsx
│ │ └── styles.module.css
│ └── utils/
│ └── id.ts # ID 生成工具
├── __tests__/
│ ├── useTasks.test.ts
│ └── TaskCard.test.tsx
└── public/
└── favicon.svg
flowchart LR
A["1. 创建项目<br/>npm create vite"] --> B["2. 配置 Claude<br/>CLAUDE.md"]
B --> C["3. 定义类型<br/>src/types/"]
C --> D["4. 构建 Hook<br/>src/hooks/"]
D --> E["5. 开发组件<br/>src/components/"]
E --> F["6. 测试验证<br/>npm run test"]
F --> G["7. 代码审查<br/>/review"]
G --> H["8. 构建部署<br/>npm run build"]
style A fill:#E3F2FD
style B fill:#E8F5E9
style C fill:#FFF3E0
style D fill:#F3E5F5
style E fill:#FFEBEE
style F fill:#E0F7FA
style G fill:#FFF9C4
style H fill:#C8E6C9
App.tsx 根组件:
import { TaskBoard } from './components/TaskBoard';
import { useTasks } from './hooks/useTasks';
import styles from './App.module.css';
function App() {
const {
tasks,
addTask,
deleteTask,
updateTask,
filterByStatus,
filterByPriority,
} = useTasks();
return (
<div className={styles.app}>
<header className={styles.header}>
<h1>TaskFlow</h1>
<p className={styles.subtitle}>
用 Claude Code 构建的任务管理器
</p>
</header>
<TaskBoard
tasks={tasks}
onAddTask={addTask}
onDeleteTask={deleteTask}
onUpdateTask={updateTask}
onFilterByStatus={filterByStatus}
onFilterByPriority={filterByPriority}
/>
</div>
);
}
export default App;
> 帮我将项目部署到 Vercel。先构建确认没有错误,然后用 Vercel CLI 部署
Claude Code 会执行:
npm run build
npx vercel --prod
预期输出:
✓ Build successful.
🔍 Deploying...
✅ Production: https://taskflow-xxx.vercel.app
sequenceDiagram
participant D as 开发者
participant CC as Claude Code
participant FS as 文件系统
participant BR as 浏览器
D->>CC: 描述需求
CC->>CC: 分析上下文 & 规划
CC->>D: 展示计划(待审批)
D->>CC: 确认执行
CC->>FS: 创建/修改文件
CC->>D: 展示变更结果
D->>CC: 提出调整或新需求
CC->>FS: 执行修改
CC->>BR: 启动 dev server 预览
D->>CC: /review 审查代码
CC->>D: 审查报告
D->>CC: 确认构建
CC->>FS: npm run build
/compact:长会话中每完成一个阶段就压缩一次上下文allow,敏感操作保持 ask 或 deny/review 是免费的代码审查,提交前必用| 资源 | 说明 |
|---|---|
| Claude Code 官方文档 | Anthropic 官方快速入门指南 |
| Claude Code Best Practices | 官方最佳实践文档 |
| Claude Code 命令参考 | 完整斜杠命令和 CLI 参数参考 |
| Claude Code 权限配置 | 权限模型和沙箱配置详解 |
| Claude Code 终端配置 | 终端兼容性和快捷键设置 |
| 维度 | 评估 |
|---|---|
| 适合训练营类型 | AI 编程工具入门营、前端零基础训练营、全栈工程师速成营 |
| 目标学员 | 零编程经验到 1 年经验的前端初学者 |
| 预计教学时长 | 4-6 小时(含实操练习) |
| 前置课程 | 无(HTML/CSS/JS 基础即可) |
| 后续课程建议 | Claude Code Skills 开发、MCP 服务器构建、Agent 自动化 |
| 实操占比 | 70% 实操 + 30% 讲解 |
| 所需设备 | 笔记本电脑(macOS/Linux/WSL2)、稳定网络、Claude Pro 及以上订阅 |
[!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 等场景全覆盖。
