Tsonglew's Blog

Back

让 AI 生成一屏收藏列表,几句话就能开始。难的是随后判断这屏东西能不能交付。标题变长有没有被截掉,加载失败能否重试,手机上能不能找到搜索框,程序说「已完成」时究竟运行了哪些检查。

这节课要交付一份可执行的前端任务说明,以及一次有证据的验收记录。你需要会读接口数据,能在本地启动项目,并有一个可以读取和修改代码的 AI 编程工具。HTML 与 CSS 的具体写法可以让工具实现,业务规则、约束和验收结论需要有人负责。

带上第一课的工程地图与第二课的视觉约束。这次委托把它们变成可运行的交互原型,沿用同一份交付工作簿记录修改范围和验收结果。

先打开慢读界面基线,看一眼三条示例数据。下载包里保留了这些材料,提示词模板可另存到自己的项目。基线页面目前只有静态内容和原生表单,尚未实现动态搜索、登录和持久保存。本课会指导你委托 AI 生成自己的练习版本,不能把基线当作已经完成这些功能的应用。

GitHub 的提示工程文档建议明确目标、提供具体例子、指出相关代码,再通过较小的任务迭代。本课参考了这些原则,把它们落实到一次前端交付里。GitHub Copilot 提示工程 ↗

一句「做个漂亮页面」遗漏了什么#

下面这段要求可以得到很多种合理答案。

帮我做一个漂亮的收藏管理页面,用现代化设计,支持搜索和移动端。
text

AI 可能选择密集表格,也可能画出占满首屏的大卡片。搜索可以指标题匹配,也可以包括标签、简介和全文。「支持移动端」也没有说明要保住哪些操作。模型需要自己填满这些空白,最后你会收到一组未经讨论的产品决定。

换成下面这段,第一轮就更容易检查。

做一个叫慢读的个人资料库页面。读者主要任务是找到之前保存的文章并打开原文。
先展示三条给定资料,搜索范围限定标题和简介,忽略英文大小写。
桌面采用左侧阅读状态导航、右侧列表;390px 窗口改为单列,搜索入口仍可见。
标题最多占用所需行数,不用固定高度截断。资料状态必须有文字。
沿用参考页的浅色纸张背景与深绿色强调色,先把信息层级和阅读间距做好。
交付时展示成功、无匹配结果和加载失败三种状态,并说明如何重复触发。
text

第二段仍允许 AI 设计字号、间距和组件实现。它先固定了会影响用户任务的选择,你就能按同一组条件比较不同方案。

「高级感」「像某个知名产品」「符合最佳实践」可以描述方向,但需要跟随可观察的要求。否则反馈容易变成下一轮的「再高级一点」。

先把项目现场交给 AI#

上下文不等于把整个仓库粘进聊天框。先让工具读取与任务相关的入口、依赖和约定,确认它能访问哪些材料。

如果你在已有产品里工作,至少提供页面路由、相邻页面、设计组件、API 契约和运行命令。组件库已有按钮,就让 AI 复用;项目用某个路由器,就别在一次页面任务里顺手更换。后端接口还没实现的字段,需要在任务里标明。

独立练习则可以解压下载包,把 AI 的工作目录设为包含 resources.json 的那一层。本课让它新建 prototype,基线文件继续用于对照。在这个目录启动本地服务,就能访问稍后生成的页面。

python3 -m http.server 8080 --bind 127.0.0.1
sh

原型预期地址是 http://127.0.0.1:8080/prototype/index.html。这里没有现成的 prototype,它是接下来的任务产物。

先发一条只读请求也有价值。

先阅读当前目录的 README、resources.json 和 03-css/index.html、03-css/styles.css。
如果发现 package.json、项目约定文件或已有应用入口,也读取与本任务有关的部分。
列出数据字段、可复用样式、当前运行方式,以及会影响实施的未知信息。
把亲自读到的事实和你的推测分开。尚未找到的接口或组件,不要假设已经存在。
text

检查它列出的路径是否真实、记录数是否正确。发现上下文读错时,先纠正这一步。让错误假设进入代码,后面会更难辨认。

设计要求写到能讨论的程度#

慢读首先服务阅读和查找。这里可以让 AI 提出两种紧凑草图,再根据任务选择。草图不必精修到最终配色,先确认首屏内容和操作顺序。

要决定的事本轮选择验收时看什么
用户第一眼看到什么搜索入口和资料标题品牌装饰有没有把列表挤出首屏
卡片哪些信息最突出标题先于简介,标签与状态辅助浏览长标题仍完整,次要信息没有抢过标题
窄屏保留什么搜索和完整列表,导航改为紧凑排列320px 与 390px 下无横向滚动,操作没有消失
状态怎样表达文字加必要的视觉区分去掉颜色后仍能分清未读与已归档
哪些动作真的可用打开原文、搜索、错误重试页面上没有点击后毫无反馈的装饰按钮

这些是本次练习的设计决定,AI 可以提出更合适的替代方案。接受替代方案时,把理由和新的验收条件一起更新,别让讨论只剩审美偏好。

成功页面也只覆盖了部分工作。

状态用户应该看到什么本课怎样制造它
首次加载可理解的加载提示使用受控延迟读取示例数据
成功三条给定资料,标题链接正确返回完整的 JSON
数据为空说明资料库为空返回空数组
搜索无匹配保留关键词,提供清除条件入口输入固定的无匹配关键词
加载失败错误说明与可操作的重试受控失败一次,然后允许成功

空资料库和搜索无结果需要不同文案。前者没有收藏,后者仍有收藏,只是当前条件没找到。把两种情况都交给一行「暂无数据」,用户难以决定下一步做什么。

一份可以直接使用的任务 prompt#

下面的提示词针对刚解压的练习目录,生成范围刻意收在一页原型。已有应用可以替换「运行与修改范围」段,沿用自己的技术栈与组件。产品架构会在下一课单独决定。

这段 prompt 同时定义了成果和证据。320px、390px、1280px 是本课挑选的检查尺寸,覆盖它们不代表覆盖所有设备;遇到实际用户设备仍要补测。原型的运行时字段检查也只解决数据输入问题,真实应用还需要服务端权限与业务校验。

拿到代码后,检查它说了什么#

先打开页面走一遍任务,再看修改。不要把浏览器截图、构建通过和用户流程通过混为一个结论。

AI 交付的材料能帮助确认什么还需要补什么
页面截图某个视口下的视觉结果键盘操作、滚动以及状态变化
构建或类型检查输出对应命令确实运行且通过请求失败、长内容、真实交互
自动化操作记录指定步骤与断言的结果未覆盖路径和实际阅读体验
代码差异修改范围、数据来源、实现方法运行时是否出现预想之外的结果

AI 可以执行这些检查,也可以协助你审查自己的代码。你需要核对证据与结论是否对应。一个改动声称修好了「手机布局」,只提供桌面截图,证据就不完整。GitHub 的代码审查指南同样强调检查生成代码的正确性、边界情况和可维护性。审查 AI 生成代码 ↗

无障碍检查也需要具体操作。自动扫描能找到部分问题,仍应手动检查焦点顺序、标签与键盘行为。让 AI 跑工具,然后自己走一次主要流程,两种结果可以相互补充。MDN 无障碍测试工具 ↗

出问题时,给出复现条件再要求修改#

「搜索有问题,修一下」仍会让 AI 猜测范围。先在请求与性能实验室观察竞态,再把你实际记录的证据填进下面这份调试 prompt。实验室用本地计时器模拟响应,下面的顺序和计划延迟与它一致,实际执行时间以日志为准。

取消请求和忽略失效响应都是可讨论的实现办法。验收应约束最终结果,而无需先认定某个 API 就是唯一修法。React 的 Effect 教程给出了搜索请求乱序及清理失效响应的具体示例,这个问题也会发生在其他 UI 技术中。React 关于 Effect 与数据请求的说明 ↗

如果修复没有生效,继续附上新证据。说明哪一步仍失败,检查它改的是复现问题的文件,还是另一个看起来相似的页面。每次只扩大到证据指向的范围,避免一次搜索故障演变成整个项目的重写。

本课要留下的东西#

保存你的最终任务 prompt、可以运行的原型,以及一份简短的验收记录。记录里至少有一个异常状态和一次窄屏检查,未完成的检查写明原因。

把原型地址、数据来源、完整 prompt 和检查记录填入工作簿的第三课。下一课根据这份原型讨论正式应用的架构,尚未存在的 API 继续标成待确认。

最后更改一个原先没覆盖的条件。可以把资料标题加长,也可以返回不合法的 tags。让 AI 解释页面实际发生了什么,要求它补一个针对该问题的修复和验证。你能根据材料判断这次修改是否成立,就已经完成了本课最有价值的练习。

后端转全平台 03|把需求写成 AI 能交付的前端任务
https://tsonglew.github.io/blog/backend-to-platform-01-browser
Author Tsong Lew
Published at 2026年9月23日