Vibe Coding是一种以自然语言为驱动的开发范式,开发者通过清晰描述需求,让AI(如Cursor、GitHub Copilot)生成代码,再通过迭代提示优化实现。本文以构建一个用户管理RESTful API为例,展示Vibe Coding的完整流程,包括环境配置、提示词设计、代码生成、测试与部署。
本示例使用Cursor IDE(内置GPT-4),后端采用Node.js + Express,数据存储使用内存数组(便于演示,生产可换MongoDB)。确保已安装Node.js v18+。
初始化项目:
mkdir vibe-api && cd vibe-api
npm init -y
npm install express cors
npm install --save-dev nodemon在package.json中添加启动脚本:
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
}在Cursor中新建server.js,输入以下注释作为提示词:
// 创建一个Express服务器,监听3000端口
// 实现用户管理API,包含以下端点:
// GET /api/users - 返回所有用户
// GET /api/users/:id - 返回指定id的用户,不存在返回404
// POST /api/users - 添加新用户,请求体{name, email},验证name和email必填,email格式正确
// PUT /api/users/:id - 更新用户信息
// DELETE /api/users/:id - 删除用户
// 使用内存数组存储用户,初始包含两个用户
// 添加CORS中间件和JSON解析按下Ctrl+K(Cursor的AI生成命令),AI生成如下代码:
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
let users = [
{ id: 1, name: 'Alice', email: 'alice@example.com' },
{ id: 2, name: 'Bob', email: 'bob@example.com' }
];
// 获取所有用户
app.get('/api/users', (req, res) => {
res.json(users);
});
// 获取单个用户
app.get('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: 'User not found' });
res.json(user);
});
// 创建用户
app.post('/api/users', (req, res) => {
const { name, email } = req.body;
if (!name || !email) return res.status(400).json({ error: 'Name and email are required' });
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) return res.status(400).json({ error: 'Invalid email format' });
const newUser = { id: users.length + 1, name, email };
users.push(newUser);
res.status(201).json(newUser);
});
// 更新用户
app.put('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: 'User not found' });
const { name, email } = req.body;
if (name) user.name = name;
if (email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) return res.status(400).json({ error: 'Invalid email format' });
user.email = email;
}
res.json(user);
});
// 删除用户
app.delete('/api/users/:id', (req, res) => {
const index = users.findIndex(u => u.id === parseInt(req.params.id));
if (index === -1) return res.status(404).json({ error: 'User not found' });
users.splice(index, 1);
res.json({ success: true });
});
app.listen(3000, () => console.log('Server running on port 3000'));开发者检查代码逻辑,确认生成无误。这一步展示了Vibe Coding的效率:AI自动处理了路由、验证、错误处理等细节。
Vibe Coding的核心是迭代。我们可以继续用注释要求AI改进:
在server.js顶部添加提示:
// 添加一个简单的日志中间件,记录每个请求的方法和URL
// 添加一个错误处理中间件,捕获异常并返回500状态码AI生成:
// 日志中间件
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
});
// 错误处理中间件(放在所有路由之后)
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: 'Internal server error' });
});Vibe Coding也适用于测试代码。创建test/api.test.js,提示AI:
// 使用Jest和supertest测试用户API
// 测试GET /api/users返回200和数组
// 测试POST /api/users创建用户,验证返回201和新用户
// 测试POST /api/users缺少name返回400
// 测试GET /api/users/999返回404AI生成的测试代码:
const request = require('supertest');
const express = require('express');
const app = express();
// 由于server.js未导出app,这里简化测试:直接重新创建应用逻辑
// 实际项目应将app导出,此处仅为示例
app.use(express.json());
let users = [{ id: 1, name: 'Alice', email: 'alice@example.com' }];
app.get('/api/users', (req, res) => res.json(users));
app.post('/api/users', (req, res) => {
const { name, email } = req.body;
if (!name || !email) return res.status(400).json({ error: 'Name and email required' });
const newUser = { id: users.length + 1, name, email };
users.push(newUser);
res.status(201).json(newUser);
});
describe('User API', () => {
test('GET /api/users returns 200 and array', async () => {
const res = await request(app).get('/api/users');
expect(res.statusCode).toBe(200);
expect(Array.isArray(res.body)).toBe(true);
});
test('POST /api/users creates user', async () => {
const res = await request(app)
.post('/api/users')
.send({ name: 'Charlie', email: 'charlie@example.com' });
expect(res.statusCode).toBe(201);
expect(res.body.name).toBe('Charlie');
});
test('POST /api/users missing name returns 400', async () => {
const res = await request(app)
.post('/api/users')
.send({ email: 'test@example.com' });
expect(res.statusCode).toBe(400);
});
});安装测试依赖并运行:
npm install --save-dev jest supertest
npx jestVibe Coding将开发者从重复编码中解放,专注于业务逻辑和系统设计。本文通过一个用户管理API的完整开发流程,展示了如何用自然语言驱动AI生成代码、迭代优化和编写测试。虽然AI尚不能完全替代开发者,但它显著提升了开发效率。随着AI编程工具不断进化,掌握Vibe Coding将成为未来开发者的必备技能。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。