Beta阶段技术规格说明书

Ficus是一款由gg=G团队开发的Markdown文档编辑管理工具,旨在提供类似榕树的浏览和编辑体验。软件采用Vue3和Electron框架,支持多平台。其架构包括应用层、控制层、数据层和系统层,其中控制层实现状态管理,数据层负责IR与Markdown的转换及历史快照,系统层处理文件系统和应用事件。此外,Ficus还包含了单元测试和多种测试方案确保软件质量。
摘要由CSDN通过智能技术生成

一、概述&技术栈

1.1 产品概述

F i c u s \tt{Ficus} Ficus 是一款 markdown 文档的编辑管理软件,由 g g = G \tt{gg=G} gg=G 团队开发。

F i c u s \tt{Ficus} Ficus 释义为“榕树”,榕树具有“冠盖如伞、一木成林“的特点。这也恰是本款软件想要为用户提供的核心服务:让用户的 md 文档可以像一棵榕树一样被浏览和编辑,同时让用户的多个 md 文档像榕树林一样进行多种形式的关联。

1.2 技术栈

Ficus 基于 Vue3Electron 框架开发,支持 Windows、macOS 和 Linux 系统。

二、软件总体架构

软件总体架构如图所示:

请添加图片描述

整个系统大致可以划分为四个模块:

  • 应用层(Renderer):包含markdown编辑器、图编辑器。
  • **控制层(Controller):**调用其他层接口,控制全局数据流动。
  • **数据层(FicIR):**markdown中间表示结构,便于转换成线性或树状格式;渲染进程中的文件管理。
  • **系统层(Backend):**对应 Electron 中的主进程,负责文件系统和软件更新。

项目目录架构如下:

.
├── build 构建有关资源
├── public 
├── src
│   ├── IR 数据层
│   │   ├── block
│   │   │   ├── base 基本数据结构
│   │   │   └── factory 工厂方法
│   │   ├── component 高级数据结构
│   │   ├── helper 帮助方法
│   │   ├── history 历史记录
│   │   ├── manager 对外管理接口
│   │   └── utils 插件
│   ├── common 共享资源
│   ├── main 主进程
│   │   ├── app 应用入口
│   │   ├── environment 环境
│   │   ├── filesystem 文件系统
│   │   ├── helper 帮助方法
│   │   ├── menu 菜单
│   │   ├── preferences 偏好设置
│   │   └── update 应用更新
│   └── renderer 渲染进程
│       ├── assets
│       ├── components
│       │   ├── header
│       │   ├── mindEditor 图UI
│       │   ├── richTextEditor 编辑器UI
│       │   ├── sideBar
│       │   └── textArea
│       ├── store 状态管理
│       │   └── dataManager
│       └── utils
│           ├── keyboardbinding 键位绑定
│           └── pathHelpter 路径方法
├── static 静态资源
└── test 测试文件夹
    ├── IR
    │   ├── data
    │   ├── factory
    │   └── manager
    ├── common
    └── main
        ├── data
        └── filesystem

2.1 控制层

本质是 Electron 中的渲染进程在该层次执行各种事件。

  • 与主进程交互:进行文件操作时,通过主进程暴露的ipcMain通信接口,执行对应事件;主进程需要对数据层/应用层进行修改时,也是通过控制层挂载在系统层的监听去执行对应事件。
  • 与应用层交互:当需要对应用层界面进行更新时,通过应用层相关方法对数据进行更新;在应用层执行操作时,控制层通过挂载的监听操作对系统层/数据层进行操作
  • 与数据层交互:调用数据层的接口对数据进行读取/修改操作

控制层的作用在设计上类似于MVC架构中的C,实现上可以做到松耦合。在Vuex中进行状态管理。

2.2 应用层

在该层中与用户直接交互,即UI界面。

  • markdown编辑器:使用Vditor插件的所见即所得以及预览模式,并通过lute自定义须(cite)语法。
  • 图编辑器:使用mind-map展示树结构,使用force-graph展示榕图结构。

2.3 数据层

数据层类设计如下,通过嵌入式链表实现树结构(嵌入式链表的优点在于便于修改)。使用了工厂模式使创建和使用分离

请添加图片描述

提供的接口如下:

2.3.1 数据结构

  • IR与markdown文本相互转化。
  • IR与markdown树表示相互转化。

2.3.2 历史快照保存

对每次编辑后的markdown进行文本保存,以进行撤销/重做。

2.3.3 文件缓存

将每次打开的文件建立文件绝对路径的映射关系。

2.4 系统层

本质是主进程在执行,与渲染进程通过ipc进行通信(提供接口)。提供的接口如下:

2.4.1 文件系统

  • 新建/移动/复制/保存/读取指定文件内容
  • 读取文件夹/文件摘要信息
  • 读取文件夹下信息建立tag和cite关系
  • 文件系统监听并实时更新

2.4.2 应用事件

  • 更新
  • 最大化/最小化/关闭窗口
  • 图片/配置保存路径
  • 偏好设置

2.5 日志

使用 electron-log 库和JS异常处理机制记录错误日志。

三、测试方案

3.1 单元测试

模块按功能划分如下,考虑在不同粒度上进行单元测试

请添加图片描述

3.2 真实测试

  • 验收测试:按照用例的输入输出定义,对所有用例进行测试
  • 安全性测试:随机点击页面,测试是否可能出现导致系统崩溃的未定义行为
  • 易用性测试:测试程序的人机界面,包括界面布局、界面色彩、输出格式、输入字段、程序流程、拼写等。
  • 安装测试:测试在不同环境中软件是否能正常安全并运行

3.3 工作流

  • 代码风格检查
  • 单元测试
  • Windows/MacOS/Linux构建
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值