无聊的我:又做了一个给小朋友学习英语的项目
前言
最近,小朋友学习让我非常焦虑,尤其是英语,可能是面对每天枯燥的背诵、默写,情绪上非常抵触。
于是,为了调动她的积极性,一开始想给她制作闪卡,找了一些项目,也差不多完成了,打印出来后,感觉还是无聊了一点,要图片没有图片,要发音没有发音,对着几个字母在那边干看着。
其实也是觉得A4纸打印出来的不怎么行,几天过去,纸容易坏,就算彩打,颜色也不丰富,白白增加自己很多工作量,有点事倍功半的感觉。
接着,就打算做一个网站或者App,App的门槛要高点,而且使用维护起来也不方便,最后决定做个简单的网站。
功能
确定做网站后,那么就要决定相关的功能,在思考良久之后,确定了如下几项:
📱 PWA 支持 :保存到桌面后,与App一致,避免网页式的有很多按钮;
🗣️ 双语发音 :在学习中,可以顺便听,边听边看,有助于听力训练,顺便再加上男女声交替发音;
🧠 错题本 :做错的题目会生成错题本,可以回头进行精准教学;
🏅光荣榜 :这个网站可以分享给班级(或者年级)其他小朋友使用,对前十名测试正确率最高的小朋友登榜的奖励;
📅打卡记录 : 可以查看历史记录以及每次测试的准确率
技术栈
前端:HTML5, CSS3, 原生 JavaScript (无框架,追求极致轻量) + PWA (Service Worker, Manifest)
后端:Python 3, Flask
数据库:SQLite (纯本地轻量级存储)
部署:Docker, Docker Compose
唯一让我纠结的就是题库的格式,最终选择最简单的txt格式,采用 单词 | 音标 | 释义 这样的内容以便读取,txt的读取效率高,维护也相对简单一些,json格式稍显复杂,性能开销反倒不是重点。
成果展示
Github项目地址:GitHub - luuaiyan/EnglishWordsChallenge: 一个简单的英语单词挑战网站,内置PWA,每天随时学习一点点 · GitHub
登陆界面
个人界面
- 数据概览
- 测验设置
- 错题本
- 错题复习
- 光荣榜
- 打卡日历
- 题目
部署
克隆项目
git clone https://github.com/luuaiyan/EnglishWordsChallenge.git cd EnglishWordsChallenge一键启动
确保你的服务器已安装 Docker 和 Docker Compose。在项目根目录下执行:
docker compose up -d服务启动后,打开浏览器访问
http://你的服务器IP:5000即可开始体验!
系统会自动初始化一个全新的 SQLite 数据库用于存放成绩与错题。
简要说明
由于出发点是可以分享给其他小朋友一起学习,因此加了注册功能,每个小朋友的数据都是独立的,这样即确保了每个小朋友学习不会出现重复现象(比如词库里面有500道题,学习过程中会优先将这500道题学习一遍,才会开始第二轮的循环),又能正常展示后台的打卡记录以及光荣榜的结果。
注册需要提前在项目根目录中的 班级名单.txt 中添加姓名,防止被恶意注册。
关于词库生成的说明(重要)
由于不同阶段,小朋友学习的知识也是不同的,一个单词有很多释义,即使通过本地字典或者网上爬虫相关的信息对学习的帮助意义不大,因此:题库的维护基本需要自行手动!
项目内置了词库打包脚本 generate_words/build_words.py,它可以帮助从 现代英汉词典.json 中抓取音标和翻译,顺便完成自动去重和排版。
使用方法:
generate_words目录下放一个words_input.txt,内容是单词(每行一个)运行
python3 build_words.py,提示输入的文件,即words_input.txt,输出文件名任意,会得到单词 | 音标 | 释义这样内容的txt文件,推荐使用VScode安装Rainbow CSV等插件进行整理
词库读取:
项目默认会读取 generate_words 目录下的文件:
一年级上学期对应words_1a.txt一年级下学期对应words_1b.txt二年级上学期对应words_2a.txt二年级下学期对应words_2b.txt三年级上学期对应words_3a.txt三年级下学期对应words_3b.txt四年级上学期对应words_4a.txt四年级下学期对应words_4b.txt五年级上学期对应words_5a.txt五年级下学期对应words_5b.txt六年级上学期对应words_6a.txt六年级下学期对应words_6b.txt
如果目录中没有这些文件,回退检索
words.txt作为备用题库
简要说明
项目创建的初衷,是给班级的小朋友日常学习相关词汇的积累使用,无法做到任何人都能直接使用,最大的原因是全国每个地区学习的内容都不一致,无法将每个年级每个学期学习的单词一次性做到位。
比如北上广深的教学,可能对他们来说这些内容太简单,但是对其他地区的小朋友而言,教材的不一致,导致学习内容很多都不一样,学习现在接触不到的单词,没有实际意义。
因此,维护这个词库需要根据不同的课本进行更新。
后续计划
后续可能会适配单词默写,根据释义填单词等,但由于现在小朋友还小,手机按键都没搞明白,待定。
愿景
接着准备把这个网站推给朋友家的小孩以及班里的小朋友,班里的小朋友看着光荣榜肯定也会冲劲十足,到时候设置一些激励计划,每月前十的小朋友可以得到不同的奖励(到时候光荣榜也要调整为每月更新)。
最后
这个项目我已经给小朋友玩了两天了,给我的反馈非常好,一点也不排斥,每天就给她做50道题目,做完了她还想接着做,但是由于其他学科还有作业,就没给她多玩。
最后,这个项目虽然耗费了我比较多的脑细胞,而且熬了几个夜才搞出来,但是成就感以及满足感是拉满的,可以说是一个非常稳定的项目。
分享给有同样需求的家长,共勉之。







