ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

用AI做学习小网页:从零实现单词卡、公式速查、测验游戏

用AI做学习小网页:从零实现单词卡、公式速查、测验游戏 用AI做学习小网页这件事最大的价值不是“炫耀”而是真的能解决日常学习里的痛点。这次我把用AI从零做出三个学习小网页的完整过程整理出来包括需求描述、提示词写法、验证方式、迭代思路和踩坑记录。先说明这篇纯分享不卖课也没有二维码。这轮做的东西很简单英语单词记忆卡、数学公式速查面板、历史知识测验小游戏。三个网页都是单文件HTML不依赖框架浏览器直接打开就能用数据存在浏览器本地不涉及后端服务器也不涉及本地大模型部署。整个过程我没有手写完整前端代码核心是靠AI对话生成HTML/CSS/JavaScript再在浏览器里跑起来调试。核心特点可以总结成四条第一门槛很低不需要系统学过前端会用浏览器和文本编辑器就能跟着走第二运行成本几乎为零静态网页双击打开就运行不需要买服务器也不需要GPU第三数据本地保存刷新不丢适合个人学习记录第四可扩展性强想加AI讲解、自动出题、错题回顾都能通过接大模型API实现。本文会带读者完成三件事理解AI辅助开发学习网页的标准化流程拿到三个可以直接运行的单文件网页示例掌握接入大模型API和排查常见问题的方法。适合以下读者想用AI做学习小工具但没有完整前端经验的人正在备考需要定制复习工具的人以及对AI编程工作流感兴趣的技术爱好者。1. 核心能力速览能力项说明项目类型AI编程辅助开发的学习类网页应用核心工具AI对话编程助手如DeepSeek网页版、Kimi网页版、豆包网页版、元宝网页版、Cursor等运行方式浏览器直接打开无需安装客户端数据存储浏览器 localStorage数据保存在本地是否需要GPU/本地模型不需要本方案不涉及本地大模型部署是否支持API接入可选可按需接入大模型API是否支持批量任务静态页面本身不支持但可以批量生成题库数据并导入适合场景单词记忆、公式速查、错题整理、知识点测验、历史时间线练习等个人学习场景从表格能看出来这个方案的重点不在“练技术”而在“快速产出可用工具”。AI编程在这里扮演的不是展示品而是生产力工具。它的核心优势是能把一个模糊的想法——比如“我想要个能翻卡片背单词的网页”——变成能跑起来的代码。2. 适用场景与使用边界这类AI生成的学习小网页最适合的场景是个人学习和小组内部使用。比如备考时做一套单词卡片复习数学公式时做一个可搜索的速查面板或者用测验小游戏检验历史知识掌握程度。因为数据存储在浏览器本地不需要注册登录也不需要数据库很适合临时、轻量、高频的使用场景。不太适合的场景也很明确不适合直接做成面向大量用户的在线产品因为localStorage的存储空间和安全性都有限不适合存储敏感隐私数据本地存储不等于加密存储不适合作为商业课程素材大量分发除非所有学习内容素材都有合法授权。这里要强调使用边界。AI生成的代码本质上是工具使用学习素材时要注意版权如果你用的是教材里的单词表、试卷里的题目自己学习没问题但公开发布或商用需要确认授权。涉及人脸、声音、身份信息的内容一律不推荐放进学习网页里。涉及API调用时API密钥不能直接硬编码在前端页面里否则访问页面的人都能看到。安全原则应该是个人使用控制好访问范围公开部署前认真做一次安全检查。3. 环境准备与前置条件这套流程对环境要求很低准备以下内容即可。一台Windows、macOS或Linux电脑配置不需要高能运行浏览器就行。一个现代浏览器推荐Chrome、Edge或Firefox。AI生成的前端代码通常对现代浏览器兼容更好。一个文本编辑器VS Code最稳妥没有的话用系统自带记事本也可以但建议装VS Code方便看代码报错。一个AI对话编程工具可以是网页版大模型对话工具也可以是Cursor这类AI编程IDE。网页版适合快速生成单文件IDE适合做多文件项目。一个本地静态服务器可选。如果只是打开单文件HTML双击就用如果后续要分成多个JS文件建议起一个本地静态服务避免浏览器拦截模块加载。本地静态服务器不是必需的但推荐准备。用Python一句命令就能起# 进入网页文件所在目录后执行 python -m http.server 8080然后浏览器访问http://localhost:8080/网页文件名.html。如果电脑上没装Python也可以装VS Code的Live Server插件右键HTML文件选Open with Live Server。这里没有写死Python版本因为不同机器环境不一样。能跑python -m http.server就行跑不起来就检查Python是否加入环境变量或者改用Live Server。4. 用AI开发学习网页的完整流程用AI开发学习网页和传统“先学会HTML/CSS/JS再写”的路线完全不同。它的核心是把需求描述清楚让AI生成初版再通过反馈迭代把页面改到能用。整个流程可以拆成五步。第一步是明确需求。不要只说“帮我做一个背单词网页”要说出具体形态和交互。比如“页面中间显示一张卡片正面单词背面释义点击翻转下面有上一个、下一个按钮收藏的单词存localStorage”。需求越具体AI生成的代码越接近最终效果。第二步是写提示词。提示词不需要复杂的模板用自然语言描述页面布局、功能、交互和样式要求就好。关键是包含这几个要素技术栈、页面结构、交互方式、数据存储方式、样式偏好。第三步是生成初版代码。把网页版对话工具返回的HTML代码保存为index.html或word-card.html然后用浏览器打开。第四步是本地运行和验证。这一步最重要。不要AI生成完就以为写完了一定要打开页面把按钮都点一遍把功能都测一遍。第五步是反馈迭代。发现任何问题直接把现象描述给AI。比如“点击卡片没有翻转效果”“中文显示乱码”“刷新后收藏丢失”。AI会基于反馈修改代码重新生成一份完整的HTML。第五步执行完一个单文件网页就成型了。整个过程看起来简单但有几个关键点会影响成功率提示词是否写清楚了交互逻辑验证时是否把功能逐项测到位反馈时是否把报错信息和期望行为说清楚。这三件事做好了AI编程的效率和稳定性会大幅提升。5. 实操案例一英语单词记忆卡这个案例的目标是做一张单词记忆卡。页面中间显示一张卡片正面是英文单词点击卡片翻转显示中文释义卡片下方有“上一个”“下一个”“加收藏”按钮收藏数据用localStorage保存。给AI的提示词可以这样写请帮我写一个英语单词记忆卡网页使用纯HTML/CSS/JavaScript单文件。 要求 1. 页面中间显示一张卡片正面是英文单词背面是中文释义 2. 点击卡片可以翻转 3. 卡片下方有“上一个”“下一个”“加收藏”三个按钮 4. 单词数据放在一个数组里方便我后续替换 5. 收藏的单词用localStorage保存页面刷新后不丢 6. 样式简洁在手机和电脑上都能看AI生成的核心JS逻辑大致长这样不同工具生成的具体结构会有差异但思路一致const words [ { word: abandon, meaning: 抛弃放弃 }, { word: benefit, meaning: 益处受益 }, { word: context, meaning: 语境背景 } ]; let current 0; let favorites JSON.parse(localStorage.getItem(favorites) || []); function render() { const item words[current]; document.getElementById(word).textContent item.word; document.getElementById(meaning).textContent item.meaning; } function flip() { document.querySelector(.card).classList.toggle(flipped); } function next() { current (current 1) % words.length; render(); } function prev() { current (current - 1 words.length) % words.length; render(); } function toggleFavorite() { const word words[current].word; if (favorites.includes(word)) { favorites favorites.filter(w w ! word); } else { favorites.push(word); } localStorage.setItem(favorites, JSON.stringify(favorites)); }打开页面后要验证这几项单词加载是否正常点击卡片是否有翻转效果“上一个”“下一个”是否按预期切换加收藏后刷新页面收藏是否还在。其中翻转效果可以通过给卡片加CSS类来实现如果点击没有反应优先检查浏览器Console里有没有JS报错。实际使用中逐步迭代可以让单词卡更接近真实需求。比如第二次迭代让AI加了“英文发音按钮”用speechSynthesis朗读单词第三次迭代让AI加了“错词复习模式”只显示没有收藏的单词。这些需求都只要追加自然语言描述就行AI会基于已有代码继续补功能。从体验上讲这个网页非常轻打开快翻卡片流畅远比手机装一个背单词App轻量得多。6. 实操案例二数学公式速查面板这个案例的目标是做一个数学公式速查面板。页面按类别展示公式支持搜索过滤点击公式名或公式文本可以复制到剪贴板。给AI的提示词请帮我写一个数学公式速查网页使用纯HTML/CSS/JavaScript单文件。 要求 1. 公式按类别分组展示如代数、几何、三角函数 2. 顶部有一个搜索框输入关键词后实时过滤公式 3. 每条公式显示公式名和公式文本 4. 点击公式文本可以复制到剪贴板 5. 公式数据放在数组里方便我后续添加 6. 样式清爽适合复习时快速查找搜索过滤的核心逻辑const formulas [ { category: 代数, title: 二次方程求根公式, formula: x (-b ± √(b²-4ac)) / 2a }, { category: 几何, title: 圆的面积, formula: S πr² }, { category: 三角函数, title: 正弦定理, formula: a/sinA b/sinB c/sinC } ]; function filterList(keyword) { const list formulas.filter(item { return ( item.title.includes(keyword) || item.category.includes(keyword) || item.formula.includes(keyword) ); }); renderList(list); }这里的关键体验是搜索响应速度。由于公式数据量不大在输入事件里直接过滤即可不需要防抖也不需要额外库。如果后续数据量膨胀到几千条再考虑加防抖或者升级成结构化数据查询。实际测试时用“二次方程”“圆”“sin”分别搜索能实时过滤到对应公式点击公式文本后粘贴到编辑器公式内容正确。这个页面最大的实用价值是免去了翻教材的时间把常用公式集中在了一个页面里。迭代方向也很明确可以继续让AI增加“公式推导折叠区”点击后展开该公式的推导要点增加“随机测验”模式随机抽一个公式要求用户写出使用场景。这些扩展同样通过对话完成不需要手工改大段代码。7. 实操案例三历史知识测验小游戏这个案例的目标是做一个历史知识选择题小游戏。每次抽一道题四选一作答答对加分答错弹窗提示正确答案错题记录到localStorage方便后续复习重练。给AI的提示词请帮我写一个历史知识测验小游戏网页使用纯HTML/CSS/JavaScript单文件。 要求 1. 页面显示一道历史选择题包括题干和四个选项 2. 用户点击选项后判断对错答对显示“正确”并加分答错显示正确答案 3. 右下角有“下一题”按钮 4. 答错的题目自动记入错题本错题本显示在页面右侧用localStorage保存 5. 题目数据放在数组里方便我后续扩充 6. 样式活泼一点适合碎片时间练习答题判断的核心逻辑const questions [ { question: 秦始皇统一六国是在哪一年, options: [公元前221年, 公元前202年, 公元221年, 公元前256年], answer: 0 }, { question: 《史记》的作者是谁, options: [司马光, 司马迁, 班固, 左丘明], answer: 1 } ]; let score 0; let wrongList JSON.parse(localStorage.getItem(historyWrongList) || []); function checkAnswer(index, questionIndex) { const q questions[questionIndex]; if (index q.answer) { score; showResult(正确); } else { if (!wrongList.includes(q.question)) { wrongList.push(q.question); localStorage.setItem(historyWrongList, JSON.stringify(wrongList)); } showResult(错误正确答案是 q.options[q.answer]); } updateScore(); renderWrongList(); }这个案例的关键点是错题数据结构和localStorage的配合。题目用数组存错题用数组存存的是题干字符串。这样做简单直接但有一个问题如果题目之后修改了题干文本错题记录就对应不上了。更稳妥的设计是用题目ID做错题标识。我在第二版迭代时让AI把所有题目都加了id字段错题列表改存id读取时再映射回题目原文。这个改动虽然让代码变长了一点但数据一致性更好。实际使用中这个测验小游戏很能调动复习积极性因为它把“刷题”变成了“闯关”。错题本功能让复习有了针对性。缺陷是题目量少需要手动填入大量题目才能形成题库。解决的思路有两种一是写一个简单的题目生成脚本从纯文本整理出JSON数据二是直接让AI按指定格式生成50道题目再粘贴进HTML里的数组。8. 进阶给网页接入大模型API三个基础网页做完后可以再加一个进阶能力让网页具备AI讲解功能。比如在单词卡页面加一个“AI造句”按钮点击后调用大模型API根据当前单词生成例句在错题本页面加“AI讲解”按钮让大模型解释为什么这个选项是错的。静态网页可以直接通过fetch调用大模型的API。下面是一个通用调用模板注意地址、模型名和鉴权方式必须按你实际使用的大模型API文档替换async function askAI(content) { const response await fetch(https://your-api-endpoint.example.com/v1/chat/completions, { method: POST, headers: { Content-Type: application/json, Authorization: Bearer YOUR_API_KEY }, body: JSON.stringify({ model: your-model-name, messages: [ { role: system, content: 你是一个学习助手用简洁的方式讲解知识点。 }, { role: user, content: content } ] }) }); const data await response.json(); return data.choices[0].message.content; }这段代码里的your-api-endpoint.example.com、YOUR_API_KEY、your-model-name都是占位符必须替换成真实API信息后再使用。这类API调用通常不是即时返回的前端要做好等待和失败处理async function onAskAI() { const answerBox document.getElementById(aiAnswer); answerBox.textContent 正在生成请稍候...; try { const result await askAI(请用一句话解释 abandon 的用法); answerBox.textContent result; } catch (error) { answerBox.textContent 调用失败请检查网络和API配置; console.error(error); } }接入API要注意几件事。首先API密钥绝对不能直接暴露在正式公开页面里否则别人查看网页源码就能拿到。个人本地使用可以临时放在HTML里但只要打算部署到公网就必须用后端转发。其次调用大模型API是按token计费的加错题讲解功能后使用频率会明显增加建议先了解清楚计费方式设置好额度。再次网页要保持可用性不能让AI接口超时卡死整个页面需要做超时处理和异常兜底。从实用角度看给学习小网页接入大模型API是把“静态工具”升级为“智能助教”的关键一步。但这步也最容易出问题最常见的就是接口401鉴权失败和返回结构解析错误。排查时先看浏览器Network面板里的请求状态码再对比API文档检查返回字段名。9. 资源占用与性能观察这套学习小网页是纯静态页面资源占用非常低。CPU和内存的消耗取决于页面复杂度和数据量单个页面在上百条数据内基本无压力。打开时如果卡顿优先检查是不是引入了外部大体积库或图片而不是代码本身。localStorage需要重点关注。浏览器对localStorage的存储空间通常限制在5MB左右如果网页里存了大量图片或超长文本很容易超限。单词卡、公式速查、题目数据都是纯文本实际使用中不太容易碰到5MB上限但错题本如果长期积累也不排除超限。遇到QuotaExceededError时清理localStorage或减小单条数据体量即可。接入大模型API后性能观察的重点变成请求耗时和费用。AI接口的响应时间通常由模型负载和输入长度决定从几秒到几十秒不等。界面一定要有“等待中”的状态提示避免用户误以为页面卡死。费用方面建议定义一个简单的计数逻辑每次调用后把累计次数写入localStorage方便控制成本。如果部署到服务器静态网页可以放进Nginx或任意静态托管服务部署后不用关注动态资源消耗主要观察访问量和带宽。这个场景下性能瓶颈通常不是网页本身而是是否接入API以及API调用频率。10. 常见问题与排查方法问题现象可能原因排查方式解决方案双击HTML打不开文件编码问题或浏览器默认打开方式不对用Chrome/Edge直接打开右键用浏览器打开先用现代浏览器打开如果无效重新保存文件中文显示乱码HTML文件缺少UTF-8声明查看文件头部是否包含meta charsetUTF-8让AI在代码里加上meta charsetUTF-8点击按钮没反应JS报错或事件绑定失败按F12打开开发者工具查看Console报错把报错内容发给AI让它修复刷新后数据丢失localStorage写入失败或key不一致检查代码中setItem和getItem的key是否一致统一key的命名确保用同一个keylocalStorage存储超限数据量超过浏览器5MB限制Console里执行localStorage.length查看条目精简数据或改用IndexedDBAI接口调用401API密钥错误或格式不对查看Network面板请求状态和响应详情重新复制API密钥检查Authorization头格式AI接口返回结构解析失败返回字段名与预期不符Console打印完整返回对象让AI按接口文档调整解析代码想让网页被局域网其他设备访问静态服务绑定了localhost检查启动命令是否监听0.0.0.0用python -m http.server 0.0.0.0:8080启动排查问题的通用思路是先看浏览器Console报错再看Network请求状态最后把报错信息复制给AI让它直接改代码。这套流程能解决90%以上的问题。11. 最佳实践与使用建议用AI做学习小网页有几个实践建议值得记录。第一第一次做项目时先跑通最小版本再逐步加功能。别一上来就要求AI生成一个包含题库、统计、AI讲解、错题本的完整应用那样代码量太大出问题后很难定位。先做一个最简单的单页面工具跑通了再迭代。第二维护一套自己的提示词模板。每次生成需求前把技术栈、页面结构、交互方式、数据存储方式固定写成一段话。这样可以保持生成代码风格的稳定性避免每次生成的代码结构差异过大。第三题库和网页代码分离。单词、公式、题目这些数据尽量放在数组或单独的JSON文件里不要散落在各种业务逻辑中。这样后续扩充题库只需要维护数据文件不用动页面逻辑。第四对AI生成的代码做最小审查。不用逐行看懂但要检查有没有明显的安全问题API密钥是否暴露是否引入了不必要的外部脚本是否有奇怪的外部请求链接。尤其是从AI聊天框直接复制代码时要保持这个习惯。第五公开分享前检查合规性。如果学习素材来自教材、试卷或商业课程资料个人使用没问题但要公开发布或商用务必确认版权授权。涉及他人肖像、声音、个人信息的内容一律不推荐做成网页发布。第六数据备份。localStorage数据存储在用户本地浏览器里换电脑或清缓存都会丢失。如果积累了大量错题记录考虑增加导入导出功能把数据导出为JSON文件保存。12. 总结这套用AI做学习小网页的流程最值得尝试的点是它把“做个工具解决自己的问题”这件事的成本降到了极低。不需要完整的前端开发基础不需要配置服务器不需要高配电脑只需要一个能打开浏览器的设备和一个能生成代码的AI助手。建议先验证一个最简单的单词记忆卡把从写提示词到浏览器运行的闭环走通。这个项目最容易踩的坑有两个一是提示词描述太笼统导致生成结果和预期偏差大二是验证不充分没有逐项测试交互导致使用时才发现问题。解决这两个坑的方法很朴素需求写具体功能逐项测。这套方法后续的扩展方向也很清晰。可以把三个独立网页整合成一个小型学习工具站通过导航页跳转可以给每个网页增加表格数据导入让单词和题目可以从Excel或CSV导入可以再进一步通过大模型API实现智能出题和学习路径推荐。AI在这里的作用不只是生成代码更是帮你把脑海中的需求变成可运行、可迭代、可使用的真实工具。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进