作者正在计划用Vue3+TS重构本项目
一款用Vue写的高效率在线背单词WebApp,经作者实践两周可背完1700个GRE单词。
写这个App是因为作者用Excel背GRE单词时发现效率虽高,但很难坚持,因此萌生了自己整合各路快速记忆方法写个背单词App的想法,并将其实现
项目参考了杨鹏的《17天搞定GRE单词》和广泛流传的Excel背单词法,以及艾宾斯浩记忆周期,用JS实现了背单词的逻辑,基于Promise简单封装了一下indexDB,用在本地保存背单词的进度
项目实例词库是某知名机构总结的最近几年真题词频最高的1700词,作者靠它抱佛脚两周考上了320
本项目尤其适合做为Excel背单词法的替代方案,尤其适合GRE这种考试,适合需要短期记忆大量单词的场景
因为是备考GRE时在空余时间写的,项目一些地方的代码复用写的比较糟糕,也未考虑性能优化。
都是本地I/O,内存啥的肯定够用,所以影响不大能用就行
点此进入本项目的demo页面(甚至可以直接在这背GRE单词)
如果觉得本项目有帮助记得给个star~
- 使用Vue.js做为整体框架
- 使用HTML5的indexDB做为本地数据库
- 异步api全部使用Promise封装
- 前端页面很简单,主要的时间花在了api上
- 基于多方面考虑做了用户系统,不同用户有独立的学习进度
因为项目使用了indexDB这种浏览器本地数据库来储存数据, 不同机器间学习数据不互通。但又因为在本地就有用户系统, 之后能很方便的把数据接上云端。
之所以使用indexDB是因为学习进度需要被长久保存, 在Web端能满足需求的只有localStorage和indexDB。 但这种需要储存大量数据的应用场景不适合使用localStorage,因此最后采用了indexDB。
因为indexDB和mongoDB有很多的相似处,本项目在未来可以很方便的切换为云端储存。
Vue + Vuex + Vue-router + indexDB
本项目核心是两个封装好的api,位于/src/api
目录下,剩余的都是在一般的vue项目里很常见的代码,花一点时间就能看懂故不多介绍。
- 操作本地数据库indexDB的api,类似于MVC模型中的M和V
- 因为indexDB是异步读写,所以每个api都用到了Promise
- 数据库设计了三个表,每个表的数据结构在代码内有详细介绍。
- user表,储存用户基本信息,比如用户名和密码。
- learned表,储存用户对每个单词的熟悉度,记忆周期等数据
- progress表,储存用户对每个list的学习进度等信息(这个表好像有点鸡肋,但一时半会也想不出更好的能满足需求的方案,相当于为了查询性能做了数据储存的冗余的操作)
- 应用层api,类似于MVC模型的C
- 包含诸如"获取下一批要复习的单词"这样的api
- 艾宾浩斯记忆周期和《17天搞定GRE单词》中的方法在这里体现
# 下载项目到本地
git clone https://github.com/chenstarx/vue-vocabulary
# 进入项目文件夹
cd vue-vocabulary
# 安装npm依赖
npm install
# 开发模式运行
npm run serve