老哥每次都要分析一次有哪些单词不好吧
mobi12 opened this issue · comments
建议增加对已翻译单词的记录,可以给文件建立一个数据结构用来保存已经分析过的单词。对于当前文件的新增内容,可以保存文档末尾的行数,并检查是否增加新行来判断是否有新的行产生,对新行的代码进行分析。还有就是已经学会的单词,可以作为减少分析次数的依据
建议增加对已翻译单词的记录,可以给文件建立一个数据结构用来保存已经分析过的单词。对于当前文件的新增内容,可以保存文档末尾的行数,并检查是否增加新行来判断是否有新的行产生,对新行的代码进行分析。还有就是已经学会的单词,可以作为减少分析次数的依据
非常感谢支持
之前考虑过保存 你提到的分析结果方案,后来放弃的,因为会产生大量的碎片
现在的方案,只有遇到新单词 时才会加载库,比 缓存文件更高效,也不会 产生碎片。缺点是占用内存 ,考虑到一个项目中最多也不过 几千条单词,这点内存可以忽略不记。
现在单词解析流程
估计你看到这里,没继续向下看,在 /src/word-provider.js
程序接收到单词列表,去 addWordTask 获取单词解释,这一步不是真实的去查询词库,存在缓存的
Lines 36 to 59 in 46afb53
addWordTask 的定义如下 /src/dictionary.js
只有遇到新单词是,会批量查询单词解释,并放入内存( localDictionary )缓存
再次打开包含相同单词的文件时,因为 undefinedWords 的列表为空,就不会去继续查询词库了
Lines 9 to 29 in 46afb53
单词列表的项目,可能会渲染1次或两次:
Lines 80 to 104 in 46afb53
初次打开源码,会渲染两次:
- 等待 Promise 解析中,这时显示 loading...
- Promise 解析完成,显示 音标和解释
第二次打开源码,因为已经有 localDictionary 缓存,只会渲染一次:
- localDictionary 缓存 中存在结果,显示 音标和解释