Skip to content
webberg edited this page Jul 3, 2022 · 4 revisions

一. 代码组织结构

|-- babel-plugin   存放一些代码编译用到的babel插件
|-- extensions     存放内置的civet扩展
    |-- color_parser 主色调提取扩展
    |-- grid_view    瀑布流布局视图扩展
    |-- imagemeta    图像元数据提取扩展
    |-- img_content_view 图像的内容视图扩展,即双击缩略图后进入的大视图
    |-- img_property 右边栏的图像属性面板扩展
    |-- map_view     地图布局视图扩展
    |-- meta3d       3D模型的内容视图扩展
    |-- wdsegment    中文分词扩展
|-- src    源代码
    |-- main         主进程
    |-- renderer     渲染进程
    |-- worker       后台工作进程
    |-- civet.d.ts   扩展接口声明文件,类似vscode.d.ts
|-- extension.js     调试、打包时安装扩展依赖的脚本

二. 存储与搜索civetkern

  1. 存储模块基于lmdb开发,在其上进行了一层封装,使用倒排索引实现对文本的搜索功能。
    后续为了丰富搜索功能,计划开发一个小型的端上图数据库gqlite。除了用于搜索之外,也能够提供搜索候选词、结果推荐排序等等灵活性更强的功能。

三. 快捷键机制

快捷键模块主要实现以下几个功能:

  1. 加载新插件时,快捷键的默认设置写入到配置文件中
  2. 卸载插件时,从配置文件中移除对应插件的快捷键设置。如果当前插件处于激活状态,同时卸载对应插件的快捷键
  3. 视图切换时,卸载前一个视图的快捷键,并对当前视图的快捷键进行激活
    Shortcut

其相关模块和功能流程如图所示。在配置页可以更新快捷键的设置,插件的安装卸载也会对快捷键进行更新,视图的切换也会导致快捷键变化。这些变化会在快捷键更新完成之后,同步写入到config文件中

四. 添加扩展