
本步目标:让 AI 帮我们实现数据的自动保存和读取
本节是数据存储的核心实现。我们会分两步完成:先实现「保存」,再实现「读取」。
在开始之前,用一个生活类比帮你建立直觉:
| 生活场景 | 对应概念 |
|---|---|
| 快递寄存柜 | localStorage |
| 柜子编号(如 A-15) | 存储的 key(键名) |
| 柜子里的包裹 | 存储的 value(值) |
| 存包裹 | localStorage.setItem(key, value) |
| 取包裹 | localStorage.getItem(key) |
就像快递柜一样,localStorage 可以帮你"寄存"数据,下次来还能取回来。
localStorage 只能存储文本(字符串)。如果要存储任务列表这样的复杂数据,需要先把它转换成文本格式(JSON),取出来时再转回去。这个转换 AI 会自动帮你处理。
我们用一个完整的 Prompt,让 AI 同时实现保存和读取逻辑。
复制下面的 Prompt,发送给你的 AI IDE:
【背景】
我有一个待办清单网页,目前已经实现了添加、删除、标记完成的功能。
但刷新页面后,所有任务都会消失。
我需要添加数据持久化功能,让任务能够保存下来。
【当前任务】
请帮我实现 localStorage 数据存储功能:
1. 保存功能:
- 每当任务列表发生变化(添加、删除、完成状态改变)时
- 自动将当前任务列表保存到 localStorage
- 使用 "todoList" 作为存储的 key 名
2. 读取功能:
- 页面加载时,自动从 localStorage 读取之前保存的任务
- 如果有保存的数据,用它来初始化任务列表
- 如果没有保存的数据(第一次使用),显示空列表
3. 数据格式:
- 每个任务需要保存:任务内容、完成状态
- 使用 JSON 格式存储
【技术要求】
- 使用原生 JavaScript
- 关键逻辑添加中文注释
- 确保保存和读取的数据格式一致
【我是初学者】
请保持代码简洁易懂,并解释关键的保存/读取逻辑。
发送 Prompt 后,AI 会更新你的代码。替换文件内容后:
用浏览器开发者工具查看:
todoList 的数据如果操作正确,你会看到类似这样的界面:
file:// 或你的网址todoList,Value 列显示类似 [{"text":"买牛奶","completed":false}] 的内容在继续之前,确认以下几点:
代码更新后,页面能正常显示
添加一个任务,开发者工具中能看到 todoList 数据
再添加一个任务,todoList 的值会更新
标记一个任务为完成,todoList 的值会更新
删除一个任务,todoList 的值会更新
可能原因:你可能打开的是 Console 或其他标签页。
解决方法:
可能原因:保存逻辑没有正确执行。
修复 Prompt:
我按照你的代码修改了,但是在浏览器的 Local Storage 中看不到 todoList 数据。
请检查保存逻辑,确保每次任务变化时都会调用 localStorage.setItem。
给我检查后的完整代码。
可能原因:数据没有正确转换为 JSON 字符串。
修复 Prompt:
Local Storage 中的 todoList 值显示为 [object Object] 或 undefined。
请确保保存时使用 JSON.stringify 转换数据,读取时使用 JSON.parse 解析数据。
给我修复后的完整代码。
排查步骤:
修复 Prompt:
更新代码后页面报错了。
控制台报错信息:[粘贴你看到的红色报错内容]
请帮我修复这个问题。
保存功能确认正常后,现在验证最关键的部分——刷新页面后数据是否还在。
| 检查项 | 刷新前 | 刷新后(预期) |
|---|---|---|
| 任务数量 | 2 个 | 2 个(不变) |
| 任务内容 | "买牛奶"、"写报告" | 相同(不变) |
| 完成状态 | "买牛奶"已完成 | 仍然是已完成 |
可能原因:读取逻辑没有正确执行。
修复 Prompt:
保存功能正常(我能在 Local Storage 中看到数据),
但刷新页面后,任务列表变空了,没有从 localStorage 读取数据。
请检查页面加载时的读取逻辑,确保:
1. 页面加载时会调用 localStorage.getItem("todoList")
2. 读取到的数据会正确解析并显示在页面上
给我修复后的完整代码。
刷新页面后,之前添加的任务还在
刷新页面后,任务的完成状态也保留了
关闭浏览器标签页,重新打开文件,任务还在
你可能注意到 AI 的代码中使用了 JSON.stringify 和 JSON.parse。这里简单解释一下:
| 方法 | 作用 | 类比 |
|---|---|---|
JSON.stringify |
把数据转换成文本 | 把衣服叠好装进行李箱 |
JSON.parse |
把文本转换回数据 | 从行李箱里把衣服拿出来 |
因为 localStorage 只能存储文本,所以:
JSON.stringify 把任务列表"打包"成文本JSON.parse 把文本"解包"还原成任务列表你不需要记住这些,只需要知道 AI 生成的代码中会包含这两个步骤。
如果你已经:
todoList 数据恭喜!数据存储功能已经实现。接下来我们做更完整的测试。