Eileen'blog

速刷单词:第一个软件的界面、使用方法与技术架构

2026-08-02T10:00:00 软件

速刷单词:第一个软件的界面、使用方法与技术架构

速刷单词是我制作的第一个完整软件,主要用来背诵和复习 CET4、CET6 词汇。它有 Android APK,也有可以直接在浏览器中打开的 Web 版本。应用不依赖账号和在线接口,学习进度、错题和主题设置都保存在本地。

下载与在线使用

Android 安装包适用于 Android 手机或平板。首次安装时,如果系统提示允许安装未知来源应用,需要在系统设置中临时开启对应权限。Web 导出包适合想在本地保存一份应用文件的情况,解压后按包内目录启动静态 Web 服务即可;普通用户直接使用上面的在线版本更省事。

软件界面分别负责什么

软件底部有三个主要入口:学习、错题和设置。

学习页:完成每天的刷词流程

学习页是打开软件后看到的主界面。顶部显示当前词书和学习模式,中间是一张单词卡片,底部显示学习进度和操作按钮。

这里可以在 CET4 与 CET6 之间切换,也可以选择三种模式:

  • 刷词:按词书顺序学习新单词,点击“认识”或“不认识”记录结果。
  • 错题:只复习曾经答错的单词,适合集中处理薄弱词汇。
  • 回顾:重新查看已经学习过的单词,不会再次改变错题记录。

单词卡片支持左右滑动。向左表示认识,向右表示不认识;在回顾模式下,滑动可以切换到下一个单词。点击卡片可以打开详情页,查看音标、释义、例句、短语、同近义词和记忆提示。

错题本:把容易忘的词单独留下来

错题页会列出答错过的单词,并按错误次数排序。点击某个单词可以重新查看详情,也可以批量移除已经掌握的词。这个页面的作用不是记录所有历史操作,而是给复习留下一个足够小、可以反复处理的清单。

设置页:管理词书、主题和学习数据

设置页负责选择默认词书、切换浅色/深色/跟随系统主题,以及查看每日学习统计。这里还提供当前词书进度和重置当前词书进度的操作。重置前建议确认,因为它会清除对应词书的学习记录。

使用教程

第一次使用

  1. 打开 在线 Web 版,或安装 Android APK。
  2. 进入“设置”,选择要学习的词书:CET4 或 CET6。
  3. 返回“学习”,确认模式为“刷词”。
  4. 阅读单词卡片后点击“认识”或“不认识”。如果想先看完整信息,可以点击卡片进入详情页。

一次完整的复习流程

先用“刷词”处理当天的词汇。遇到不熟悉的单词,点击“不认识”,随后在“错题”页集中复习;已经学过一段时间的内容,则切换到“回顾”模式重新浏览。这样比把所有单词混在一起重复查看更容易找到薄弱点。

如果习惯使用手势,可以在学习页直接左右滑动卡片。按钮更适合刚开始使用时确认操作含义,也适合手机屏幕较小或不方便滑动的情况。

软件适合做什么

速刷单词适合以下场景:

  • 准备英语四级、六级考试时做日常词汇复习;
  • 想在没有网络的环境下背单词;
  • 希望把错词单独整理出来,而不是每次从整本词书开始;
  • 需要在手机和浏览器之间切换,但不想注册账号同步数据。

它目前不是一个在线词典,也没有账号系统、云同步和发音服务。词库内容以应用内置的 CET4、CET6 数据为主,重点放在“快速浏览、记录结果、反复复习”这条流程上。

技术栈

速刷单词的源码位于 C:\Eileensass\english\source-code,主要技术如下:

部分技术用途
应用框架Expo 52统一管理 Android 与 Web 构建
页面导航Expo Router组织学习、错题、设置和单词详情页面
UIReact Native 0.76、React Native Web用同一套组件适配移动端和浏览器
编程语言TypeScript约束词条、学习状态和组件接口
状态管理Zustand保存当前词书、学习模式、错题和进度
本地存储AsyncStorage / localStorage在 Android 和 Web 中持久化学习数据
数据CET4、CET6 运行时 JSON 词库提供单词、释义、例句和记忆信息

技术架构

应用采用分层结构,页面只负责组织界面,学习数据和操作逻辑集中在状态与数据模块中。

Expo Router 页面
  ├─ 学习页 ───── StudyModeSwitch + StudyDeck
  ├─ 错题页 ──── WrongBookList
  ├─ 设置页 ──── SettingsPanel
  └─ 单词详情页 ─ WordDetail

      Zustand AppState

  词书注册与学习牌组选择器
      bookRegistry / books

  CET4、CET6 runtime JSON

  AsyncStorage(Android)或 localStorage(Web)

启动时,Bootstrap 先注册可选词书,再加载运行时词库。学习页通过 getStudyDeck 根据当前模式、词书、错题次数和最近学习记录生成牌组;用户点击按钮或滑动卡片后,状态层记录结果并推进牌组。单词详情页只读取当前词条,因此不会在每次打开详情时重新扫描整本词库。

在发布阶段,Expo Metro 将 React Native 代码打包成两种成品:Android 端生成 APK,Web 端生成静态文件。博客只负责托管 Web 导出文件和 APK 下载文件,并通过 /software/expo/english/ 提供独立的应用入口;软件页面本身使用 iframe 承载 Web 成品,所以打开应用时不会混入博客导航和侧栏。

这套结构的取舍比较直接:数据和学习记录优先放在本地,应用可以离线使用,代价是目前没有跨设备同步。如果以后加入账号或云同步,可以在现有状态层之上增加同步服务,不需要重写学习页和词卡组件。

项目地址与重新构建

源码目录:C:\Eileensass\english\source-code

重新构建 Web 版本:

npm install
npm run web:package

运行类型检查:

npm run typecheck

Android 版本需要 Android SDK 和本地构建环境;正式发布时还要配置签名文件。当前博客提供的是已经构建好的 APK,普通用户不需要安装开发环境。