我本着 GoldenDict 的精神(www.goldendict.org,更多信息请参见 Google Play 商店)为 Firefox OS 编写了一个字典应用程序:http ://tuxor1337.github.io/firedict和https://marketplace.firefox。 com/app/firedict
由于 ffos 的应用程序基于 HTML、CSS 和 JavaScript(WebAPI 等),我必须从头开始编写所有内容。一开始,我用 JavaScript 写了一个用于同步和异步访问 StarDict 字典的基本库:https ://github.com/tuxor1337/stardict.js
尽管该应用程序现在可以称为稳定,但整体性能仍然有些迟钝。对于某些词典,我有一个包含近 1,000,000 个词条的单词列表!那是巨大的。索引需要很长时间(每个字典最多几分钟)和查找。目前,单词存储在 IndexedDB 对象存储中。还有其他选择吗?使用当前的解决方案(使用二进制搜索访问和插入的单词),整体体验非常缓慢。也许它会变得更快,如果 IndexedDB 有一些语言环境排序支持......实际上,我什至没有将术语本身存储在数据库中,而只是将它们的偏移量存储在 *.syn/*.idx 文件中。我希望这样做可以节省一些内存。但是当然我不能在这个配置中使用任何 IDB 排序功能......
也许在内存中进行排序不是最好的主意,因为现在由于某些设备(例如 ZTE Open)上的 OOM 导致应用程序被内核杀死。超过 500,000 个条目的字典肯定会超过 100 MB 的内存。(每个条目只有 200 字节,如果您认为关键字字符串是 UTF-8,那么您将立即超过 100 MB...)
随意直接为 GitHub 上的项目做出贡献。否则,我很高兴听到您对上述问题的建议。