快速原型開發
上週我用Claude Code從零搭了一個全棧Todo應用,前後端+資料庫全都有。本來以為要搞兩三天,結果大半天就弄完了。
今天把這個過程寫下來,給你看看Claude Code到底能快到什麼程度。
專案概述
要做什麼
一個完整的Todo應用,包含:
- React前端(現代化介面)
- Express.js後端API
- MongoDB資料庫
- JWT使用者認證
- 完整的CRUD功能
- 可選的雲部署
技術棧
- 前端: React 18 + React Router + Axios
- 後端: Node.js + Express + Mongoose
- 資料庫: MongoDB
- 認證: JWT
節省了多少時間
| 開發方式 | 時間 |
|---|---|
| 傳統開發 | 16-24小時 |
| Claude Code | 2-3小時 |
大概快了8-10倍。
準備工作
需要什麼環境
先確保你的機器上有這些:
node --version # 需要16+
npm --version
mongod --version # 或者用MongoDB Atlas也行
建立專案
mkdir todo-app-fullstack
cd todo-app-fullstack
git init
git branch -M main
啟動Claude Code
claude
進入後會看到歡迎介面,就可以開始對話了。
開始構建
第一句話怎麼說
直接告訴Claude Code你要什麼:
我想做一个全栈Todo应用:
- React前端(Create React App)
- Express后端API
- MongoDB数据库
- JWT用户认证
- 完整的CRUD功能
帮我规划项目结构,创建基础文件。
Claude Code會自動:
- 建立前後端目錄結構
- 生成配置檔案
- 初始化package.json
- 建立基礎檔案
最終的專案結構
todo-app-fullstack/
├── backend/
│ ├── src/
│ │ ├── models/
│ │ ├── routes/
│ │ ├── middleware/
│ │ └── server.js
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ └── services/
│ └── package.json
└── README.md
後端開發
建立Express伺服器
先完成后端。创建Express服务器:
- CORS、body-parser等基础配置
- 错误处理中间件
- MongoDB连接
- 端口5000
Claude Code會生成完整的server.js:
backend/src/server.js:
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
// 中间件配置
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 数据库连接
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/todoapp', {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log('✓ MongoDB connected successfully'))
.catch(err => console.error('MongoDB connection error:', err));
// 路由
app.get('/api/health', (req, res) => {
res.json({ status: 'ok', message: 'Server is running' });
});
// 路由导入(稍后添加)
const authRoutes = require('./routes/auth');
const todoRoutes = require('./routes/todos');
app.use('/api/auth', authRoutes);
app.use('/api/todos', todoRoutes);
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({
success: false,
message: err.message || 'Something went wrong!',
});
});
// 404处理
app.use((req, res) => {
res.status(404).json({
success: false,
message: 'Route not found',
});
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`✓ Server is running on port ${PORT}`);
console.log(`✓ API available at http://localhost:${PORT}/api`);
});
module.exports = app;