用 Cursor 写完整前后端 Demo(Vibe Coding 实战)

用 Cursor 写完整前后端 Demo(Vibe Coding 实战)


一、前期准备

  1. 安装好 Node.js
  2. 安装好 Cursor 并成功登录
  3. 新建一个空文件夹,用 Cursor 打开这个文件夹

二、核心思路:分模块 Prompt 驱动开发

Vibe Coding 的核心是把大需求拆成小任务,用精准的 Prompt 让 AI 生成代码,我们只负责验收和迭代

我们做一个**「待办事项 Todo List」前后端 Demo**,包含:

  • 后端:Node.js + Express + 简单内存存储(不用数据库,直接跑)
  • 前端:HTML + CSS + JavaScript + 原生 fetch 调用接口
  • 功能:增删改查 Todo、页面实时刷新

三、Step 1:用 Cursor 写后端代码

1. 生成后端项目结构

在 Cursor 底部的 AI 聊天框(Cmd/Ctrl + L 唤起),输入:

复制代码
帮我用 Node.js + Express 搭建一个待办事项 Todo List 的后端服务,要求:
1.  项目结构清晰,包含 package.json、入口文件 server.js、路由文件
2.  实现完整的 RESTful API:
    - GET /api/todos:获取所有待办
    - POST /api/todos:新增待办
    - PUT /api/todos/:id:更新待办状态
    - DELETE /api/todos/:id:删除待办
3.  用内存数组存储数据,不用数据库,重启服务数据会重置(方便演示)
4.  开启 CORS 跨域支持,允许前端访问
5.  端口设为 3001,启动后打印 "Server running on http://localhost:3001"
6.  直接给我完整的所有文件代码,包括 package.json 的依赖配置
7.  给我详细的启动步骤

2. 执行 AI 生成的代码

  • Cursor 会自动生成 server.jsroutes/todo.jspackage.json 等文件
  • 打开终端cmd,执行:

    bash 复制代码
    npm install
    node server.js
  • 看到 Server running on http://localhost:3001 说明后端启动成功

  • 可以用 Postman 或浏览器访问 http://localhost:3001/api/todos 测试接口

浏览器返回的 [ ] 是一个空的 JSON 数组,这是完全正常的:

说明 GET /api/todos 接口成功响应了

后端服务在 localhost:3001 端口正常监听

因为还没有添加任何待办事项,所以返回空数组


四、Step 2:用 Cursor 写前端代码

1. 生成前端页面

在 Cursor 聊天框,输入:

复制代码
帮我写一个 Todo List 的前端页面,要求:
1.  纯 HTML + CSS + JavaScript,不用框架,直接打开就能用
2.  页面美观,响应式,适合电脑和手机
3.  功能:
    - 输入框新增待办
    - 展示所有待办列表,支持标记完成/未完成
    - 支持删除待办
    - 实时和后端 http://localhost:3001/api/todos 交互,用 fetch 调用接口
4.  有加载状态、错误提示,体验流畅
5.  直接给我完整的 index.html 文件代码,包含所有样式和脚本
6.  告诉我怎么运行这个页面

2. 运行前端页面

  • Cursor 会生成 index.html 文件
  • 直接右键 Open in Default Browser 用浏览器打开,就能看到完整的 Todo 页面
  • 测试增删改查功能,确认和后端数据同步

但是现在出现了问题,下面的已添加项目无法加载:

让cursor自主解决其修改并回复如下:

我发现你现在的症状很像:初次 GET /api/todos 的加载动画没有正确结束,但 POST/新增还能工作。为了彻底避开"加载卡住导致体验变差",我会改成本地状态(前端数组)管理 + 从 POST/PUT/DELETE 的返回结果直接更新 UI,这样页面不会依赖"每次操作都重新 GET 列表",也能保证增删改实时生效。

我看你截图里转圈遮罩还在,但列表区域已经有内容------这通常是前端的"加载状态"没正确结束、并且你之前的实现还会在每次新增/勾选/删除后再触发一次 GET 刷新,一旦 GET 在浏览器端卡住,就会出现你说的"只能用添加功能、但一直转圈/模糊"。

我已经把 index.html 做了两类修复(都已落到代码里):

  1. 不再依赖"每次操作都重新 GET 列表"
    • POST /api/todos 成功后:直接用后端返回的创建结果更新前端 todosState 并渲染
    • PUT /api/todos/:id 成功后:直接用返回的更新结果替换对应项并渲染
    • DELETE /api/todos/:id 成功后:直接从 todosState 移除并渲染
    这样即使 GET 刷新卡住,你的增删改也不会再被拖住。
  2. 强化"加载遮罩一定会结束"
    • fetch 增加 8 秒超时(超时会抛错并关闭遮罩)
    • setLoading() 现在同时控制:
    • loadingOverlay.hidden
    • loadingOverlay.style.display 用来避免不同打开方式下 hidden 表现不一致导致遮罩不消失

结果成功加载:

后端数据已同步:

后面内容可根据自己需要让cursor优化代码。

五、Step 3:一键优化与迭代(Vibe Coding 核心)

如果页面/接口有问题,或者想加功能,直接用自然语言给 Cursor 提需求,比如:

  • 「把前端页面的主题色改成蓝色,按钮改成圆角」
  • 「给 Todo 加一个优先级标签,高/中/低,用不同颜色显示」
  • 「后端改成用 JSON 文件存储数据,重启不丢失」
  • 「给前端加一个批量删除已完成待办的按钮」

AI 会自动修改对应文件的代码,你只需要刷新页面/重启服务看效果,不满意再继续提需求。


六、Step 4:项目打包与部署(可选)

在 Cursor 聊天框输入:

复制代码
帮我把这个前后端 Todo 项目整合成一个可一键启动的项目,要求:
1.  前端打包成静态文件,放到后端的 public 文件夹
2.  启动一个命令就能同时跑前后端,访问 http://localhost:3000 直接打开页面
3.  给我详细的启动步骤和部署到 Vercel/Render 的方法

七、关键技巧(让 AI 写的代码更靠谱)

  1. 拆小任务,不要一次性要完整项目:先写后端,再写前端,最后优化,避免 AI 逻辑混乱
  2. Prompt 越具体,代码越能用:明确技术栈、功能、端口、格式,不要模糊描述
  3. 先跑通基础功能,再迭代优化:先做最简单的增删改查,再加样式、加功能
  4. 善用 Cursor 快捷键
    • Cmd/Ctrl + L:唤起 AI 聊天
    • Cmd/Ctrl + K:选中代码,让 AI 解释/优化/修复
    • Cmd/Ctrl + I:内联补全代码

完整项目包含所有代码及配置文件,见:github.com/brillisme/cursor-vibe-coding

相关推荐
GEO索引未来16 小时前
一文说清2026年GPT 卖货两种方式
人工智能·gpt·ai·chatgpt
我命由我1234517 小时前
浏览器的 JS 模块化支持观察记录
开发语言·前端·javascript·css·html·ecmascript·html5
智算菩萨17 小时前
【Tkinter】15 样式与主题深度解析:ttk 主题系统、Style 对象与跨平台样式管理实战
开发语言·python·ui·ai编程·tkinter
BlockChain88818 小时前
区块链入门【一】:揭开“信任机器”的神秘面纱
区块链·ai编程
周末也要写八哥19 小时前
高级语言的技巧的使用边界探讨
ai编程
UXbot20 小时前
UXbot 是什么?一句指令生成完整应用的 AI 工具
前端·ai·交互·个人开发·ai编程·原型模式·ux
前端 贾公子20 小时前
CC Switch == 安装指南
ai编程
小程故事多_8021 小时前
自然语言智能体控制框架,重塑AI Agent的协作与执行范式
人工智能·架构·aigc·ai编程·harness
小驴程序源1 天前
【OpenClaw 完整安装实施教程(Windows + Ollama 本地模型)】
gpt·langchain·aigc·embedding·ai编程·llama·gpu算力