LexiMethod Academy:让单词简单一点
这是一个什么项目
LexiMethod Academy 是我最近用 vibe coding 完成的一个个人项目:一个"授人以渔"的英语方法教学网站,覆盖发音、音标拼写、自然拼读、词根词缀和记忆方法五条线。它不是又一个背词表工具,核心目标写在首页顶部——教方法,而不是堆词表。
具体的验收标准很朴素:学完之后,你看到生词能读出来,听到发音能拼出来,拆开词根能猜出意思,再用科学的复习与输出,把被动词汇变成主动词汇。全站 8 门方法课程、每门 8 步,从自然拼读到元认知训练排成一条学习路径。

技术形态上,它是一个纯前端、零后端、零 CDN 的站点:不加载任何外部字体与网络资源,全部使用系统字体栈,断网也能用;学习进度、复习排期、个人设置全部存在浏览器本地的 localStorage 里,刷新不丢。
开发理念:vibe coding 的几条原则
这个项目从头到尾由我用自然语言驱动 AI 完成,属于典型的 vibe coding 实践。但" vibe “不等于"随口说说”,为了让产出不沦为 AI slop,我给自己定了几条硬约束。
第一,先锁验收,再写代码。 项目里所有功能都必须先有可执行的验收标准,再允许改动。这套约束落在仓库的四个脚本上:
scripts/checkData.mjs—— 数据层断言:48 个音标 id 唯一、例句含目标词、11 种题型每种至少 8 道且答案自洽、8 门课 × 8 步动画类型全部被支持;scripts/acceptance.mjs—— puppeteer 驱动的深度 UI 验收:13 条路由零console.error、首页 3 秒内可交互、旗舰课 8 步走通、拖拽题可判对、刷新保留进度、375px 视口无横向滚动;scripts/smoke.mjs—— 冒烟测试,快速确认全路由可访问、核心流程可走完;scripts/size.mjs—— 首屏体积门禁,首屏 JS+CSS(gzip)必须小于 200KB。
第二,内容数据化。 所有教学内容——8 门课的六段结构、48 个音标的口型舌位、11 种题型的题库、词根词缀、遗忘曲线排期——全部是 src/data/ 下的 TypeScript 数据文件,而不是散落在组件里的硬编码。改一门课的内容不需要动任何 UI 代码,数据检查器会立刻告诉你有没有把结构改坏。这是我认为最适合 AI 协作的架构:人和 AI 都只改数据,渲染层保持稳定。
第三,最小切片 + 逐轮清理。 不追求一次生成完整应用,而是先跑通一个可验收的切片,再按"死代码 → 重复 → 命名与错误处理 → 测试加固"四轮清理,每轮结束都复跑全套验收。项目里 .omx/plans/ 下留着当时的验收与修复计划文档,可以看到这套流程的原始痕迹。
vibe coding 的关键不是让 AI 写多少行代码,而是你能不能把"什么叫做对了"描述成机器可执行的判据。
技术重点速览
技术栈并不新奇,但在约束下有几个值得一提的取舍:
- React 18 + TypeScript + Vite + Tailwind,路由全部懒加载,构建时按
vendor/motion手动分包,配合体积门禁控制首屏; - zustand + persist 三个 store(进度、复习、设置),把 XP、连续天数、活跃热力图、错题本、SRS 卡片全部落到 localStorage;
- 间隔重复排期:复习按 1 / 3 / 7 / 14 / 30 天五档调度,答对升档、答错降回第 0 档,页面上是一个可视化的到期队列;
- 零音频文件的语音方案:例词朗读用 Web Speech API(英式/美式、常速/慢速),交互音效用 Web Audio API 现场合成振荡器波形,不引入任何音频资源;
- 动效可降级:framer-motion + GSAP 负责入场与课程动画,但动画档位分
full / light / off三档,自动跟随系统的prefers-reduced-motion,并写入<html data-motion>让 CSS 同步降级,无障碍不是事后补的。



学生能从中学到什么
如果你也在做类似的课程项目或毕业设计,这个项目能给你三层可迁移的经验。
方法论层面:课程的固定六段结构(原理讲解 → 分步动画演示 → 互动练习 → 实战分析 → 常见误区 → 掌握标准)本身就是一套通用的教学设计模板,换成数据结构课程、操作系统课程同样适用。而间隔重复、主动回忆、元认知复盘这些学习科学原理,是拿来就能用的个人学习系统。
工程层面:数据驱动的内容架构、状态持久化、性能体积门禁、响应式与无障碍降级、自动化验收——这些都是真实项目里每天要处理的问题。你会明白"能跑"和"可验收"之间隔着多少东西。
协作层面:当开发由自然语言驱动时,最值钱的能力变成了把意图写清楚、把验收写成代码。AI 可以替你写实现,但"什么叫做对了"必须由你定义;定义得越具体,产出越不像 slop。
授人以渔的下一句,是让学习者自己能造出新的鱼竿。
如果你也在做类似的个人项目,欢迎交流指正——尤其是"验收标准怎么写才能既约束 AI、又不限制创造力"这个问题,我还在持续摸索。