DWords2: 全新版本的弹幕背单词

 

我觉得通过弹幕背单词是个好主意, 不过一年多前我用 Python 写的那个软件有点太简陋了, 局限性比较强, 而且放到现在还有各种兼容性问题. 因此这次我重写了 DWords, 全新版本使用 Electron 开发, 界面 (相对一代的烂界面) 要好看得多, 且新增了一些功能. 新版本使用 WebDAV 同步, 用坚果云就可以很好地同步了, 比一代的邮件同步强很多.

项目主页 | 下载地址

主要功能

弹幕除了显示释义外, 还有音标, 发音按钮, 以及外部词典链接. 外部词典可以自定义. 弹幕大小, 移动速度, 颜色和透明度都可设置, UI 相对一代精细很多.

danmaku

支持学习计划, 可以从词库创建学习计划. 支持常用的词库如四六级, 考研, 雅思等. 当然也支持自定义计划, 学习计划还能导入导出. DWords 维护一定数量的 "当前单词" 列表, 随机播放当前列表中的单词; 标记为已记住的单词会从当前列表中移除, 并依次从计划中补充新的单词.

支持查词功能, 可以当词典使用. 如果单词不在计划中, 可以快速添加到计划; 如果已经在计划中, 还可以编辑它.

支持使用 WebDAV 同步. 这样我们就可以使用任何支持 WebDAV 的云盘同步. 以坚果云为例, 我们先在根目录创建一个文件夹 DWords, 然后进入安全选项设置页面, 创建一个 WebDAV 授权.

jianguoyun

这里的服务器地址表示云盘的根目录, 因此 https://dav.jianguoyun.com/dav/DWords 便表示 DWords 目录. 我们进入 DWords 的设置页面设置好相应的 WebDAV URL, 用户名和密码即可使用同步功能了.

sync

DWords 会定时自动同步, 也可以点击主界面上的 "Sync" 按钮手动同步.

实现

DWords2 使用 Electron 构建. 前端使用 Vue 框架, 布局样式则使用 Bootstrap. 我作为一个后端开发确实不太懂这些东西, 开发过程也感受到前端开发并不容易. 语言用的是 js, 代码基本上是面向过程的, 状态-更新状态的模式. 数据存储使用的是 SQLite.

为了通过云盘同步, 我的做法是将单词列表序列化成 CSV, 相比 JSON, CSV 占用空间小很多. 同步使用的是全量 + 增量的方式. 单词的添加和修改会先以增量的方式上传到云盘, 拉取增量数据时会从上次同步的位置开始取, 这样同步速度会比较快. 如果增量文件过多, 就会将所有增量文件整合成一个全量文件. 这种方式支持同步大量单词.

内置词典使用的是 skywind3000/ECDICT, 语言库使用的是 Lingoes 的语音库. 在此向 Linwei 和 Lingoes 表示感谢.

后续工作

后续可做的东西还是有很多的. 现在弹幕是随机播放的, 且标记为已记住的单词不会再出现. 后续可能会做一个根据遗忘曲线复习的功能. 还可以做一些统计图表, 记录每天记住的单词数量, 每个单词查看释义的次数等.

最后希望这个工具能对英语学习者有帮助, 也祝大家都能学好英语.