一个纯前端、可直接部署的高中语文背诵练习小工具。
- 按篇目选择和搜索
- 逐句背诵
- 错字高亮对比
- 随机提示字
- 正确率统计
- 手写输入(Canvas 画板 + Workers AI 识别)
- 本地记录:
- 使用次数
- 总输入字数
- 最近使用篇目
- 移动端友好
- 无需后端,默认离线可用(手写识别需网络)
这个项目刻意保持为纯静态站点:
- 无 npm
- 无构建工具
- 无数据库
- 无账号系统
- 无上传原文到服务器
这样做的好处:
- 可以直接丢到 GitHub Pages
- 可以直接丢到 Cloudflare Pages
- 不容易超出 Cloudflare 免费层限制
- 用户输入内容默认只保存在本地,不上传
.
├── public/
│ ├── index.html
│ ├── styles.css
│ ├── app.js
│ └── data/
│ └── texts.js
├── worker/
│ └── index.js
├── wrangler.toml
├── wrangler.jsonc
└── schema.sql
- 创建公开仓库
- 上传这些静态文件
- 在仓库 Settings → Pages 中启用 Pages
- 选择从主分支部署
- 新建 Pages 项目
- 连接 GitHub 仓库
- 构建命令留空
- 输出目录填
/ - 直接部署
如果要走 Workers,也可以把这些文件作为静态资源直接托管。
推荐使用 wrangler.jsonc 配置,静态文件放在 public/ 目录,Worker 代码放在 worker/ 目录:
assets.directory指向./public/main指向worker/index.jsrun_worker_first = true确保 API 路由由 Worker 处理
支持的后端功能:
POST /api/stats— 记录背诵统计GET /api/stats— 全站统计GET /api/stats/me?uid=xxx— 个人统计POST /api/recognize— 手写文字识别(Workers AI 多模态模型)
因为统计这种东西最容易白白消耗免费额度。
如果每次输入、每次提示、每次切句都请求一次 Workers API:
- 请求数会快速上涨
- 还会增加延迟
- 对这种小工具没必要
所以默认方案是:
- 本地 localStorage 统计
- 不上传原文
- 不上传逐句输入
这是最省资源也最稳的方式。
如果以后要加 Cloudflare Workers 统计,建议只记录聚合数据:
- 总访问次数
- 总开始次数
- 总完成次数
- 总输入字数(仅聚合值)
不要记录:
- 用户原始输入内容
- 背诵文本原文
- 用户身份信息
并且建议:
- 只在进入页面时上报一次
- 完成全文时上报一次
- 不要每次按键都请求
这样基本不容易打爆免费层。
当前内置的是一批常见高中语文背诵篇目与节选,后续还可以继续补全和校对。
MIT