1. 从一句 prompt 到线上可访问:这套链路到底解决了什么
如果你写过前后端分离项目,大概率经历过这种节奏:先想清楚接口,再建目录、装依赖、配数据库、调跨域、改端口、写部署脚本,最后还要把服务挂到公网。每一步都不难,但串起来就是半天起步。Cursor 这类 AI 编程工具的价值,是把「写代码」这一段压缩成「描述需求 + 接受改动」,而 Sealos 这类云操作系统的价值,是把「跑起来 + 发出去」这一段压缩成「点几下 + 填个端口」。
这篇要做的,是一个 Todo List:后端 Node.js + Express + MongoDB,提供四个 RESTful 接口;前端 Vue 3 + Vite,带亮暗模式和过滤显示;数据库用 Sealos 里的 MongoDB;前后端各自跑在 Sealos 的 Devbox 里,最后发版拿到公网地址,前端对接后端接口,整条链路跑通。全程你不需要手写业务代码,但需要你准确地把「环境信息」和「接口契约」喂给模型——这也是零代码生成项目最容易翻车的地方。
适合谁看:会一点命令行、能看懂 JSON、但不想从零搭骨架的人;或者你已经会用 Cursor,但每次部署都要重新查文档,想把流程固定下来。下面按「先备好环境 → 再生成后端 → 再生成前端 → 对接 → 发布 → 排错」的顺序走,每一步都给可复制的 prompt 和命令。
2. 前置准备:Sealos 里把数据库和两个 Devbox 建好
2.1 创建 MongoDB 并记下连接信息
登录 Sealos 控制台后,在应用管理里创建一个 MongoDB 实例。创建完成后,你会拿到一组连接信息,形如:
主机:test-db-mongodb.svc 用户名:root 密码:rm6pn7tc注意这里的test-db-mongodb.svc是集群内部的服务名,Devbox 之间通过它互访,不需要公网地址。密码以你实际创建的为准,后面 prompt 里要替换。数据库名可以先用默认的test,集合名用list。
提示:MongoDB 的连接串在代码里通常写成
mongodb://root:密码@test-db-mongodb.svc:27017/test?authSource=admin。如果连不上,优先检查authSource和端口。
2.2 创建后端 Devbox
在 Sealos 里新建一个 Devbox,运行环境选 Node.js。创建时注意两点:一是暴露端口,后端我们统一用3000;二是记下这个 Devbox 的名称,后面发版会用到。Devbox 本质是一个带公网访问能力的开发容器,你在里面跑node app.js,外部就能通过它分配的公网地址访问。
2.3 创建前端 Devbox
同样新建一个 Devbox,环境选 Node.js,暴露端口用5173(Vite 默认端口)。前端 Devbox 和后端 Devbox 是独立的,互不干扰。两个 Devbox 都创建好之后,分别打开它们的终端,确认node -v和npm -v能正常输出。
2.4 把 Cursor 连到 Devbox
Cursor 本身是本地编辑器,要操作 Devbox 里的文件,最省事的方式是用 Cursor 的远程开发能力连上去,或者直接在 Devbox 终端里用命令行创建项目、再用 Cursor 打开对应目录。无论哪种方式,核心是:Cursor 里看到的目录,就是 Devbox 里的项目根目录。后端项目根目录已经npm init过,前端项目根目录已经初始化好 Vue 3 结构,这样模型才能「直接修改」而不是「从零创建」。
3. 后端生成:用 prompt 把接口契约写死
3.1 后端 prompt 模板(可直接复制)
把下面这段整体丢进 Cursor 的 Composer(或 Chat 的编辑模式),注意替换数据库连接信息:
请为我开发一个基于 Node.js 和 Express 框架的 Todo List 后端项目。 项目需要实现以下四个 RESTful API 接口: 1. 查询所有待办事项 - 接口名: GET /api/get-todo - 功能: 从数据库的 'list' 集合中查询并返回所有待办事项 - 返回: 包含所有待办事项的数组 2. 添加新的待办事项 - 接口名: POST /api/add-todo - 参数: { "value": string, "isCompleted": boolean } - 返回: 新添加的待办事项对象,包含自动生成的唯一 id 3. 更新待办事项状态 - 接口名: POST /api/update-todo/:id - 功能: 根据 id 更新指定待办事项的完成状态(isCompleted 取反) - 返回: 更新后的待办事项对象 4. 删除待办事项 - 接口名: POST /api/del-todo/:id - 返回: 删除操作的结果状态 技术要求: 1. 使用 Express 框架构建 API 2. 使用 MongoDB 作为数据库,通过 Mongoose 进行数据操作 3. 实现适当的错误处理和输入验证 4. 使用 async/await 语法处理异步操作 5. 遵循 RESTful API 设计原则 6. 添加基本的日志记录功能 数据库连接方式: 主机:test-db-mongodb.svc 用户名:root 密码:rm6pn7tc 数据库名:test 集合名:list 约束: 1. 直接以当前目录作为项目根目录,此目录已经初始化完 Node.js 项目,直接修改即可 2. 如果需要执行命令,请暂停创建文件,让我先执行命令 3. 为这个项目中的所有代码写上详细注释这段 prompt 的关键在于「接口契约 + 环境信息 + 约束」三件套。接口契约写死了路径、方法、参数、返回,模型不会自由发挥;环境信息让模型直接生成可用的连接串;约束里的第 2 条尤其重要——它让模型在需要npm install时先停下来,避免它自作主张执行命令导致环境混乱。
3.2 执行与安装依赖
模型生成完文件后,按它提示的命令安装依赖:
npm install express mongoose morgan然后启动:
node app.js如果启动报错,把报错信息复制回 Composer,让它修复。常见的是端口占用或连接串格式问题。启动成功后,在 Sealos 后端 Devbox 里获取公网地址,形如https://xxxx.sealoshzh.site。
3.3 生成接口测试用例
拿到公网地址后,用下面这段 prompt 让模型生成测试用例:
@https://你的公网地址/ 这是我们的根地址,帮我们生成这四个接口的测试用例, 以及接口成功和不成功的返回值。模型会输出一组 curl 命令,形如:
# 获取所有待办事项 curl -X GET https://你的公网地址/api/get-todo # 添加新待办事项 curl -X POST https://你的公网地址/api/add-todo \ -H "Content-Type: application/json" \ -d '{"value": "学习Node.js", "isCompleted": false}' # 更新待办事项状态 curl -X POST https://你的公网地址/api/update-todo/65f2e8b7c261e6001234abcd # 删除待办事项 curl -X POST https://你的公网地址/api/del-todo/65f2e8b7c261e6001234abcd注意示例里的 ID 是占位符,实际测试时要先用get-todo拿到真实 ID 再替换。测试通过后,把接口文档保留下来,前端对接时直接复用。
4. 前端生成:Vue 3 + Vite 的 prompt 怎么写
4.1 前端 prompt 模板
前端 prompt 的重点是「功能清单 + UI 要求 + 约束」:
请为我开发一个基于 Vue 3 的 Todo List 应用。要求如下: 1. 功能需求: - 添加新的待办事项 - 标记待办事项为完成/未完成 - 删除待办事项 - 统计待办事项完成度 - 过滤显示(全部/已完成/未完成) 2. UI/UX 设计要求: - 全屏响应式设计,适配不同设备 - 拥有亮色模式和夜间模式 - 现代化、简洁的界面风格 - 丰富的色彩运用,但保持整体和谐 - 流畅的交互动画 - 在按钮和需要的地方添加上图标 约束: 1. 直接以当前目录作为项目根目录,此目录已经初始化完 Vue 3 项目结构,直接修改即可 2. 如果需要执行命令,请暂停创建文件,让我先执行命令 3. 请你根据我的需要,一步一步思考,给我开发这个项目,特别是 UI 部分一定要足够美观和现代化模型会分步生成组件、样式和逻辑。中途它可能要求你安装依赖,按提示执行:
npm install @vueuse/core @heroicons/vue tailwindcss postcss autoprefixer4.2 端口与启动配置
前端 Devbox 暴露的是5173,所以启动命令要带上 host:
npm run dev -- --host 0.0.0.0 --port 5173更稳妥的做法是直接改package.json:
"scripts": { "dev": "vite --host 0.0.0.0 --port 5173", "build": "vite build", "preview": "vite preview" }这样每次npm run dev都自动监听所有网卡,Sealos 才能把端口映射出去。启动成功后,前端 Devbox 也会分配一个公网地址。
5. 前后端对接:接口契约 + 跨域一次说清
5.1 用接口文档驱动对接
把后端生成的接口文档整体贴进 Cursor,让模型完成请求封装:
下面是这个 todolist 的四个接口,请完成接口对接的工作: 1. 获取所有待办事项 GET https://你的后端公网地址/api/get-todo 成功响应:{ "success": true, "data": [...] } 失败响应:{ "success": false, "error": "获取待办事项失败" } 2. 添加新的待办事项 POST https://你的后端公网地址/api/add-todo Content-Type: application/json 参数:{ "value": "学习Node.js", "isCompleted": false } 3. 更新待办事项状态 POST https://你的后端公网地址/api/update-todo/:id 4. 删除待办事项 POST https://你的后端公网地址/api/del-todo/:id模型会生成api.js或类似的请求模块,把四个接口封装成函数,并在组件里调用。
5.2 跨域问题的处理
前后端在不同域名下,浏览器会拦截请求。最直接的方式是在后端加 CORS 中间件:
npm install cors然后在app.js里:
const cors = require('cors'); app.use(cors());如果只想放行特定来源,可以写成app.use(cors({ origin: 'https://你的前端公网地址' }))。改完后重启后端,前端刷新页面,请求应该就能通了。
5.3 前端请求 404 的排查
如果前端报 404,先确认三件事:一是请求的 baseURL 是不是后端公网地址;二是路径有没有多写或少写/api前缀;三是后端是否真的在跑。用 curl 直接打后端接口,能通说明后端没问题,问题在前端配置;不能通说明后端或端口映射有问题。
6. 发布上线:后端先发,前端后发
6.1 后端发版
在 Sealos 后端 Devbox 里点击发版,选择合适的服务器规格,确认版本号后上线。上线完成后,你会拿到一个稳定的公网地址。把这个地址提供给前端,作为接口 baseURL。
6.2 前端发版
前端发版前,先确认接口地址已经改成后端正式地址,保存后再发版。同样选择规格、确认版本号、上线。上线完成后访问前端公网地址,应该能看到完整的 Todo List 界面,添加、完成、删除、过滤都能正常工作。
6.3 验证清单
发布后按这个顺序验证:打开前端页面 → 添加一条待办 → 刷新页面确认数据还在(说明数据库写入成功)→ 标记完成 → 删除 → 切换过滤条件。全部通过,说明前后端和数据库三方都通了。
7. 本篇常见错误与排查
后端启动报 MongoServerSelectionError:多半是连接串里的主机名或authSource不对。Sealos 内部服务名要写全,密码不要带特殊字符未转义。
前端请求被 CORS 拦截:后端没加cors中间件,或origin配置写错。开发阶段可以先app.use(cors())全放行,上线前再收紧。
前端 404:baseURL 写成了相对路径,或者路径里少了/api。用浏览器开发者工具的 Network 面板看实际请求地址。
端口映射不生效:Devbox 暴露的端口和实际启动端口不一致。后端统一3000,前端统一5173,改完package.json后重启。
模型生成的代码跑不起来:把完整报错贴回 Composer,让它基于报错修复,不要自己猜。多数问题是依赖没装或版本不匹配。
如果你在接入过程中需要统一管理模型调用和密钥,可以看看 TaoToken 的 API Keys 页面,配合接入文档把请求地址和鉴权配好;想先验证模型输出效果,可以直接在模型对话里试;如果是长期做编码和 Agent 类任务,Coding Plan会更省心。官网入口在这里。
最后留一个我踩过的坑:模型生成的项目结构有时会把app.js和server.js混用,启动命令对不上。遇到这种情况,直接看package.json里的main字段和scripts,以它为准,别凭记忆敲命令。