无聊,迅速做了一个新玩具,一个词典服务,没想好叫什么名字,就叫做 久久词典吧。
由Garden
提供词库管理,目前仅支持mdx
词库的操作。
关于mdx
词库操作,来自mdx-query
的源码,稍微改了改嵌入到Garden
中。
发音功能倒是必须的,没有音频文件,需要看看mdd
怎么操作。(20240208 已支持mdd中的mp3音频文件解析)
页内@link和@entry
跳转还没做。(20240208已作支持)
用户登录和收藏夹功能计划中,导出功能好像没多大意义。(优先级低)
ld2
词库文件的解析还没有加上。
没有上面功能,好歹还能用用吧。
Todo list
已标注时间的表示已经开发完成,但并不表示已经release
基础功能:
- 词典列表(20210809)
- 多词典检索,分类检索(20211123)
- 单词网络发音(20210813)
- 适配手机端(20210809),
新版本 (20230419,20240207)
- 全面重构(进行中,上面的适配得重新搞)
必备功能(重点):
单词联动(20210813 预计重构,已支持 20240207)
- 支持 Link 联动(20240207)
- 支持 Entry 联动(20240207)
MDD资源文件支持(20220808-20220909):
- 图片检索(jpg、png) (20240207)
- 声音文件支持 (20240207)
- CSS支持 (20240207,嵌套地狱暂未支持)
- JS支持 (20240207,嵌套地狱暂未支持)
位于mdd文件的css中的嵌套资源,并且该资源又来自mdd文件,这样的嵌套支持起来有点麻烦,容易形成嵌套地狱,目前未支持,准确说我也没想好怎么取数据好。(20240207)
外部资源文件支持:
- 词典外挂css支持(20240207)
- 词典外挂js支持(20240207)
- 外挂字体支持(20240207 不完美)
可选功能:
- 授权Garden登录(20220309)
- 独立配置(20220309)
- 单词收藏
- 云端同步
吐个槽
20240208
偶然间看到Github上一个issue: Eudic doesn't load CSS and JS files from .mdd file #5
鉴于利用有限的空闲时间来写这个服务,吐个槽。
有些制作词典的大佬们,喜欢将 js, css, font 资源文件打包在 mdd 中。
这样解析先得拉了mdd 中的css (还不知道key,人工肉眼检索初始化 db 文件,写死在代码里,要不然就得低效检索所有的 mdd 文件),再从 css 中正则出 css 引用的资源的key(一般是font),再继续 在 mdd 中查询出该 key 的内容,循环嵌套,嵌套地狱。
作为目前这个词典服务,完全不想解析这样的 mdd 文件,既浪费机器资源,对于网页服务,查询出来的数据占用流量会大很多。字体这块不太好缓存下来,除非做个工具提取,精力实在跟不上。
倒是外挂的css, js,font,解析起来方便,正则出来挂上就行,而且字体还能缓存。
Log
更新日志以后就放在这里吧,未发布
是没有时间且未整合完成,最终会发的。
2024-02-07(未发布)
1.由Vuex
切换到Pinia
;
2.全面重构和设计各个组件;
3.词典多释义支持(不完美),支持 @@@=link
, Entry:\\
资源跳转;
4.支持 jpg, png
资源图片显示;
5.支持外挂 js, css
文件;
6.支持外挂字体文件(不完美),暂时简单解决多次缓存,节省流量;
7.重构后端查词逻辑,减少资源暂用;
8.修复后端mdx-query
在一个词典包含多个mdx, mdd
文件时的初始化bug;
8.已知问题,外挂资源文件存到mdd
文件中并且套娃的问题,暂未想到好的解决方法;
2023-11-03(未发布)
1.升级到最新的Vue3
工具链;
2.使用 Vite
,typescript
重构所有组件;
2023-04-19(未发布)
1.使用vue3深度重构search/word/dict页面;
(1).element-plus
渐渐成熟,移除bootstrap
依赖,重回element-plus
,所以单词结果页面不再支持emoji
了;
(2).重构后暂时不支持单词内重定向检索单词;
2.支持mdd
词库资源文件检索和页面显示;
(1).支持JS
脚本执行;
(2).多词典检索情况下支持脚本,样式,字体隔离;
(实现下来v-html
不支持js
,且与母页面会导致样式侵入结果页;
shadow dom
可以继承母页面字体,但在js上并不能达到想要的效果;
权衡之下用了iframe
,做到了隔离,但是由于无法共用母页面字体,需要在查询结果页面需要加字体追加到页面中,且需要字体文件托管在固定域名下,可以考虑放CDN)(已做处理,可以被浏览器缓存 20230207);
(3).支持本地发音文件,TTS;
(4).支持图片资源显示;
(5).支持第三方字体侧加载;
3.支持将单词查询结果保存为本地HTML
文件;
4.支持词典内容中emoji(已移除bootstrap, 所以这个不支持了,后续再看看怎么解决);
2022-03-09
1.1
1.改进导航路由级别;
2.引入bootstrap
(1).去除项目底层rem设置为px(不兼容bootstrap的base font size);
(2).重写部分组件,去除其对于element-plus
的依赖;
(3).支持词典内容中emoji;
(4).检索结果排版优化;
(5).高亮词典内容中关键字;
3.重写category
功能,新增setting
配置,可将配置保存到本地;
4.支持用户登录;
5.单词本管理功能;(未完成)
6.支持收藏单词;(暂不支持自定义单词本)
2021-11-23
1.0
1.支持分类,可以按照词典类型来检索;
2.支持字典类跳转entry://
对于category
的支持;
3.dict
页面新增词典分类
4.目前存在的bug:element-plus
的select
控件开启filter
会触发手机键盘,导致错位的问题;
2021-09-13
0.9
1.修正element-ui
图标问题,折叠按钮在iphone 6s
及其他小屏手机下的bug,暂时采用符号替代;
2021-08-23
0.8
1.重构vue2
为vue3
版本(element-ui/icon, vuex, vue-router);
2.修正搜索单词undefined
的问题;
3.修正vue-router
重定向问题;
4.修正element-ui
图标问题;
2021-08-17
0.7
1.修正entry://
替换逻辑, 暂时支持所有词典的单词联动;
2.header样式修正;
3.修正《音标与发音库集合》词典音频
显示效果;
2021-08-16
0.6
1.支持更多entry://
页面跳转到关联单词的词典支持;
2.header样式修正;
2021-08-13
0.5
1.修正Kingsoft-Phonetic
字体在Firefox
浏览器不生效的问题;
2.支持entry://
页面跳转到关联单词;
3.加入第三方语音,目前存在播放后https
降级问题;
2021-08-12
0.4
1.增加 Kingsoft-Phonetic
和tahoma
字体,解决部分词库音标乱码问题;
2.构建环境变量修正;
2021-08-11
0.3
1.支持链接直接搜索 search/?word=xxxx
;
2.添加meta info, 似乎动态生成的没有识别???;
2021-08-10
0.2
1.支持词典列表展示;
2.暂时屏蔽mdx
检索出的发音
和其他img
标签;
3.默认折叠,无搜索结果词典将会显示为灰色;
2021-08-09
0.1
1.支持多词典mdx
检索,暂不支持mdd,ld2
文件和跳转
;
Document
下面两个项目对本项目至关重要:
本项目的mdx/mdd查询来源该项目,mdict_query: A python module for looking up mdict dictionary file (.mdx and .mdd).
本项目对于mdd资源的处理效果参考自下面项目:mdict-js: A pure Javascript implementation for parsing MDict file (mdx/mdd) in local.