news 2026/10/11 1:47:54

实战演练:用 AI 从零构建一个待办事项(Todo)应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实战演练:用 AI 从零构建一个待办事项(Todo)应用

前言:

光说不练假把式。本节我们将通过一个极简的待办事项(Todo)管理应用,把本章学到的项目说明书、规则、五要素框架等技巧串联起来,完整走一遍“基于提示词的 AI 编程工作流”。

你不需要是资深全栈工程师,只需按照步骤操作,就能体验如何让 AI 帮你从零构建一个可运行的 Web 应用。

1. 项目背景与目标

我们要开发一个“麻雀虽小,五脏俱全”的 Todo 应用,它只包含 3 个核心操作:

  • 新增:输入标题,添加一条待办事项。
  • 查询:以列表形式展示所有待办事项。
  • 标记完成:单击复选框,切换事项的完成状态。

技术栈选择

为了让你专注于 AI 编程工作流本身,而非数据库配置,我们采用了最轻量级的方案:

  • 后端:Python 3.12 + FastAPI(现代 API 框架)。
  • 前端:原生 HTML/CSS/JavaScript(单文件实现,无框架依赖)。
  • 存储:内存存储(Python list)。程序重启后数据会清空,但这能让我们省去数据库配置的麻烦,直击 CRUD 逻辑核心。

预备知识:三剑客

在开始之前,简单认识一下我们的三位主角:

  1. FastAPI:基于 Python 的现代 Web 框架,专为构建 API 设计。它能自动处理参数验证,还能自动生成交互式 API 文档。
  2. Pydantic:FastAPI 的底层数据验证库。我们用 Python 类型注解定义数据模型(如title: str),它就能自动完成校验和格式转换。
  3. Uvicorn:FastAPI 的运行服务器。它是一个轻量级的 ASGI 服务器,负责接收 HTTP 请求并转发给 FastAPI 处理。

三者关系:FastAPI 定义逻辑,Pydantic 确保数据格式正确,Uvicorn 让应用跑起来。


2. 第一步:项目初始化(给 AI 立规矩)

在向 AI 发出编程请求之前,我们需要先搭建好“基础设施”。这就像给新员工入职培训,先告诉它项目背景和规矩。

2.1 创建项目说明书 (AGENTS.md)

在 TRAE 中新建一个工程,在空目录下创建AGENTS.md,填入以下内容。这份文档就是 AI 的“项目圣经”。

# TodoApp - 待办事项管理应用 项目简介 学习用的待办事项管理应用,包含 FastAPI 后端和原生 HTML 前端。 数据存储在内存中(Python list),适合快速原型验证。 技术栈 Python 3.12 + FastAPI + Pydantic v2。 原生 HTML/CSS/JavaScript(无框架依赖)。 数据存储:内存中的 Python list。 项目结构 main.py: FastAPI 应用入口,包含内存存储和所有 API 路由。 schemas.py: Pydantic 数据模型。 templates/index.html: 前端单页应用。 架构约定 后端只负责 API 响应,不含 HTML 渲染逻辑。 前端通过 fetch 调用后端 API。 内存存储使用全局 list,id 自增使用 itertools.count。 常用命令 安装依赖: pip install fastapi uvicorn pydantic。 启动服务: uvicorn main:app --reload。 访问前端: http://localhost:8000/。

2.2 创建规则文件 (todo-style.md)

接着创建.trae/rules目录,并在该目录下创建todo-style.md。这是 AI 的“行为准则”。

--- alwaysApply: true --- TodoApp 编码规范 API 响应规范 创建成功: HTTP 201。更新成功: HTTP 200。 资源不存在: HTTP 404, body 格式为 {"detail": "Todo not found"}。 数据模型 Todo 使用 Pydantic 模型。 id 为 int,自增生成。 created_at 使用 datetime.now(timezone.utc)。 前端规范 使用原生 JavaScript,不引入任何前端框架。 所有 API 调用使用 fetch API。

3. 第二步:后端 API 开发

基础设施建好后,我们开始让 AI 写代码。将以下提示词输入 TRAE 的 Agent 模式。注意,我们不需要自己写一行代码,AI 会根据提示词生成main.py和schemas.py。

## 任务
实现 TodoApp 的后端 API,包含新增待办事项、查询待办事项和标记完成 3 个接口。

## 技术栈

  • Python 3.12 + FastAPI + Pydantic v2。
  • 数据存储在内存中(Python list),id 使用 itertools.count 自增。

## 文件结构
(1) schemas.py: 定义 TodoCreate 和 TodoResponse 两个 Pydantic 模型。
- TodoCreate: title (str, 必填)。
- TodoResponse: id (int), title (str), is_completed (bool), created_at (datetime)。
(2) main.py: FastAPI 应用入口,包含以下路由。

## 接口清单

表格
方法路径说明
GET/todos获取所有待办事项,返回 {"todos": [...]}
POST/todos新增待办事项,请求体 {"title": "xxx"},返回 HTTP 201
PUT/todos/{id}更新待办事项,请求体 {"is_completed": true},返回更新后的对象

## 约束

  • 资源不存在时返回 HTTP 404,body 格式 {"detail": "Todo not found"}。
  • created_at 使用 datetime.now(timezone.utc)。
  • main.py 需要挂载 templates 目录,根路径"/"返回 index.html。

## 验收标准

  • POST /todos 创建成功 → HTTP 201,返回完整 Todo 对象。
  • GET /todos → 返回所有待办事项列表。
  • PUT /todos/{id} 更新 is_completed → 返回更新后的对象。
  • PUT /todos/999(不存在)→ HTTP 404。

AI 生成代码后会告知生成了哪些文件、有哪些接口以及验证结果,以便我们进行确认。


4. 第三步:前端页面开发

后端搞定后,继续让 AI 实现前端。同样,我们不需要创建文件或编写代码,AI 会自动实现功能。

## 任务
创建 templates/index.html,为 TodoApp 提供可视化界面。

## 技术栈

  • 原生 HTML + CSS + JavaScript(单文件实现,无框架依赖)。
  • API 调用使用原生 fetch。

## 页面结构
(1)标题: 顶部显示“待办事项管理”。
(2)添加区域: 一个文本输入框 + “添加”按钮。
(3)待办事项列表: 逐条显示所有待办事项,每条包含以下内容:
- 标题文字。
- 完成复选框(单击后切换完成状态)。
- 已完成项显示删除线样式。

## API 调用说明

表格
操作方法路径说明
获取列表GET/todos页面加载时调用
新增POST/todosbody: {"title": "xxx"}
切换状态PUT/todos/{id}body: {"is_completed": true/false}

## json响应格式

// GET /todos 响应 {"todos": [{"id": 1, "title": "完成任务", "is_completed": false, "created_at": "2025-01-15T10:30:00"}]} // POST /todos 响应 {"id": 1, "title": "完成任务", "is_completed": false, "created_at": "2025-01-15T10:30:00"} // 错误响应 {"detail": "Todo not found"}

## CSS 样式要求

  • 整体浅色系,白色背景,灰色边框。
  • 主色调:浅蓝色 (#4A90D9),仅用于按钮和标题。
  • 已完成项:浅灰色文字 + 删除线。
  • 布局:居中显示,最大宽度为 600px。
  • 字体:无衬线字体 (sans-serif)。

## JavaScript 功能要求
(1) 页面加载时调用 GET /todos 获取列表并渲染。
(2) 单击“添加”按钮,调用 POST /todos,成功后刷新列表。
(3) 单击复选框,调用 PUT /todos/{id} 切换完成状态,成功后刷新列表。
(4) 所有操作失败时在控制台输出错误信息。

## 验收标准

  • 页面加载后显示待办事项列表。
  • 输入标题并单击“添加事项”,新待办事项出现在列表中。
  • 单击复选框,待办事项完成状态切换,文字样式变化。

AI 生成前端代码后会告知部分细节,如页面结构、CSS 样式、JavaScript 功能等,以便我们进行审查。

小贴士:虽然后端和前端可以一次性开发完成,但基于实际项目经验,小步推进更好。一次只做一件事,以免 AI 因为幻觉导致返工和质量不稳定。


5. 第四步:运行应用

在后端和前端开发完成后,按以下步骤启动应用:

  1. 安装依赖。具体命令如下:

    pip install fastapi uvicorn pydantic
  2. 启动服务。具体命令如下:

    cd todo_app uvicorn main:app --reload
  3. 访问应用。打开浏览器访问http://localhost:8000/,即可看到 TodoApp 界面。在输入框中输入待办事项标题,单击“添加”按钮即可创建;单击待办事项前的复选框,即可切换完成状态。

由于 AI 越来越智能,以上步骤很可能不需要手动执行。AI 在编写完代码后,会根据项目说明书(AGENTS.md)中的运行方式,自动运行程序。如果缺少依赖,AI 也会自动安装相关的依赖。这也是项目说明书的价值所在,只要给 AI 足够的上下文,随着 AI 越来越聪明,它能够做的事情会越来越多。

本案例使用内存存储,程序重启后数据会清空。这是为了简化复杂度,让读者专注于理解 AI 编程工作流本身。


6. 完整工作流回顾

图 1 展示了本案例完整的 AI 编程工作流。这个工作流的核心特点:

  • 项目说明书和规则是一次性投入,对全程生效。
  • 后端与前端分别用独立的提示词驱动。
  • 每一步之后都有人工审查与测试环节,确保质量可控。

图 1:AI 编程工作流

本案例的交付物具体如下:

  1. 后端 API(main.py+schemas.py):3 个接口(新增待办事项、查询待办事项、标记完成)。
  2. 前端页面(templates/index.html):可视化界面,支持添加待办事项和标记完成。
  3. 项目配置(项目说明书 + 规则):可供复用的 AI 协作规范。

运行后,就可以看到一个简洁的待办事项管理页面,如图 2 所示。

图 2:TodoApp 前端页面效果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 1:47:50

Spring AI 多模型并行测速:利用 Flux 统计不同厂商 TTFT 与首字延迟

上个月公司做大模型能力聚合网关,业务线产品经理提了一个挺现实的诉求:前端对话框必须做到极致的“打字机秒出”。在他们眼里,用户不管你后面跑的是千亿参数还是量化版本,如果点了发送按钮超过两秒屏幕还没动静,就会被…

作者头像 李华
网站建设 2026/10/11 1:47:44

Web 3D 骨骼动画轻量化重构:基于多项式曲线拟合的顶点蒙皮数据压缩

在虚拟数字人、3D 网页游戏以及电商商品交互展示中,带有生动骨骼动画(Skeletal Animation)的模型是极具表现力的核心资产。一个数字人流畅地做出挥手、奔跑或舞蹈动作,能瞬间拉近与用户的空间距离感。 然而,很多前端团…

作者头像 李华
网站建设 2026/10/11 1:47:35

12.Design For Other\2.Downrev Allegro 23.1-25.1 to 17.2

程序功能:实现allegro brd版图文件版本从23.1-25.1降低到17.2。 由于cadence对版本的限制比较严格,一旦升级到高的版本,就很难降低到原来的版本了。通过这个程序可以实现调用cadence自带的降版本功能brd文件从23.1-25.1高版本降低到17.2低版本…

作者头像 李华
网站建设 2026/10/11 1:47:09

电器元件-时间继电器

简介继电器就是用小电流,去控制大电流设备的 “电控开关”,相当于用电来控制的开关,不用人用手按。普通继电器是通电就立刻干活;时间继电器,就是会“延时等待”的继电器。给它通上电,它不会马上接通/断开后…

作者头像 李华
网站建设 2026/10/11 1:46:28

yolov5无人机目标检测实战:从模型训练到Tello飞控追踪全流程

简介:面向K12阶段学生与入门级AI开发者的YOLOv5大疆Tello TT无人机项目资源,完整覆盖目标识别、追踪与测距的实践链路,将深度学习与无人机编程结合。压缩包共1667个文件,包含758张JPG图像与694个TXT标注(对应“旗”“圈…

作者头像 李华
网站建设 2026/10/11 1:46:17

迈向统一的机器人学习:连接表征、视觉-语言-动作与世界模型

26年9月来自富士公司和CMU的论文“Toward Unified Robot Learning: Bridging Representation, Vision-Language-Action, and World Models”。这篇论文最有价值的贡献,是把机器人学习中的环境表征、动作生成和未来预测放进同一个分析框架,说明很多失败发…

作者头像 李华