← 返回笔记

刷题引擎、自动挖空和练习模式

2026.07.06 · 练习引擎 · Quiz App

Quiz App 的核心体验不是导入,而是刷题过程。刷题页需要同时处理题目顺序、用户答案、即时反馈、错题收集、统计结果、断点续刷和手势切换。如果所有逻辑都堆在组件里,后面会很难维护。

引擎模块

文档里把刷题相关逻辑放到 utils/quiz/engine.tshooks/useQuizSession.ts。前者提供判题、洗牌、过滤、会话生成等纯逻辑;后者负责把这些逻辑接入 React 状态和页面生命周期。

engine.ts      -> checkAnswer / shuffle / filter
stats.ts       -> 正确率、趋势、薄弱点
useQuizSession -> 当前题、答案、提交、下一题、完成

自动挖空

填空题在导入后会经过自动挖空。触发条件是题型为 fill,且题干里还没有 ____。系统会把答案文本替换为下划线,并支持顿号枚举的多空答案。这样用户不需要手工把每道填空题整理成统一格式。

这里选择规则挖空,而不是完全依赖 AI。原因很实际:纯前端规则可预测、可测试、离线可用;AI 可以作为增强,但不应该成为基础能力的前提。

练习模式

交互细节

移动端体验被放在比较重要的位置。左右滑动可以切题,浮动题目导航网格显示当前题、已答题、未答题和云端已答状态。完成页用颜色区分正确率:高于 80%、高于 50%、低于 50% 分别对应不同反馈。

这些细节不复杂,但它们让刷题过程像一个完整应用,而不是一组表单。