把上节课用 Codex 生成的原型,补成一个能被别人用一次的应用:能新增、能保存、刷新还在。
更重要的是学会指挥 Codex 把一个想法一块块做出来——以后换个点子,你自己也能再做一个。
今天要打通一条链路:界面 → 逻辑 → 数据 → 交互。
任何一个网站,都由三块组成:
今天我们不学"当厨师"(写后端),而是学怎么用 Codex 这个超级员工,把这三块分别搭出来。
把你的应用里反复出现、反复操作的那一条信息,想成 Excel 的一行——它有哪几列?
| 应用 | 一条信息 = 哪几列 |
|---|---|
| 背单词 | 单词 | 意思 | 是否背过 |
| 留学申请管理 | 学校 | 截止日期 | 状态 | 备注 |
| 内容 / 兴趣社区 | 标题 | 作者 | 内容 | 点赞数 |
| 日程整理 | 任务 | 日期 | 是否完成 |
核心页面就是三件套:输入框 + 添加按钮 + 一个列表(每行带"完成 / 删除")。先让数据存在本机,最快看到成果。
帮我做一个单页网页应用(一个 HTML 文件,用原生 JavaScript,不要框架、不要复杂工具): - 顶部一个输入框 + 一个"添加"按钮 - 下面一个列表,把每一条信息显示出来,每条包含:[填你第②步的那几列] - 每条右边有"完成"和"删除"按钮 - 数据先存在浏览器本地(localStorage),刷新页面数据还在 - 代码尽量简单,关键地方用中文注释
帮我做一个单页网页应用(一个 HTML 文件,用原生 JavaScript,不要框架、不要复杂工具): - 顶部一个输入框 + 一个"添加"按钮 - 下面一个列表,把每一条待办显示出来,每条包含:任务内容、是否完成 - 每条右边有"完成"和"删除"按钮 - 数据先存在浏览器本地(localStorage),刷新页面数据还在 - 代码尽量简单,关键地方用中文注释
跑起来后:新增几条 → 刷新 → 数据还在 → 你已经做出一个能用的界面了 🎉
把刚才的页面,开一个无痕 / 隐身窗口再打开一次(或换一个浏览器)……
要让换设备也在、别人也能看,就得把数据搬到云上一个大家都能访问的地方:
Supabase 是一个免费的在线服务(去 supabase.com 注册就能用)。它一次给你两样东西:一个云端数据库(数据存这里)+ 一套现成的接口(前端拿来读写数据)——所以你不用自己搭服务器、也不用装数据库。
打开应用时,去云端数据库把清单取回来显示在界面上。
你增 / 删 / 改之后,把改动存回云端数据库。
https://xxxx.supabase.co)、publishable key(左下 Project Settings → API Keys 里复制)



把这个应用的数据,从存在浏览器本地,改成存在 Supabase: - 帮我在 Supabase 建一张表来存这些信息,字段是:[填你第②步的那几列] - 这张表先不要开 RLS、不要做登录、允许匿名读和写;安全以后再加 - 我的 Supabase 项目地址是 [粘贴你的 Project URL],publishable key 是 [粘贴你的 key],直接用它们连接 - 打开页面时,从这张表读出清单并显示 - 用官方 supabase-js 客户端读写;新增/完成/删除后,把改动写回表,再重新读一遍最新列表来刷新界面(不要解析写入操作返回的内容) - 每一步加中文注释,标出这一步是"从数据库读"还是"往数据库写"
把这个应用的数据,从存在浏览器本地,改成存在 Supabase: - 帮我在 Supabase 建一张表来存待办,字段是:任务内容、是否完成 - 这张表先不要开 RLS、不要做登录、允许匿名读和写;安全以后再加 - 我的 Supabase 项目地址是 [粘贴你的 Project URL],publishable key 是 [粘贴你的 key],直接用它们连接 - 打开页面时,从这张表读出清单并显示 - 用官方 supabase-js 客户端读写;新增/完成/删除后,把改动写回表,再重新读一遍最新列表来刷新界面(不要解析写入操作返回的内容) - 每一步加中文注释,标出这一步是"从数据库读"还是"往数据库写"

完整走一遍:打开(读)→ 新增(改 → 写)→ 刷新(读,还在)。
| 现象 | 可以这样跟 Codex 说 |
|---|---|
| 打开是空白 | "页面打开是空白,我希望它显示 Supabase 表里的清单,请检查读数据这一步" |
| 刷新后没了 / 没反应 | "新增后刷新数据丢了,像是写不进去。请确认这张表没开 RLS、允许匿名读写,再检查写数据这一步" |
| 点按钮没反应 | "点添加按钮没反应,请检查按钮和函数的连接" + 贴上报错 |
以后想做任何一个新应用,都照这五步走一遍:
2026 年 08 月 02 日(CN)