本文档概述了驱动所有 Joplin 应用程序(桌面、移动、CLI 和服务器)的基础组件和库。这些核心组件实现了基本业务逻辑、数据存储、同步功能以及实现 Joplin 在不同平台之间一致工作的共享功能。
有关设置管理、数据模型和同步的特定信息,请分别参阅设置管理、数据模型和同步引擎。
Joplin 的架构围绕一个核心库(@joplin/lib)构建,该库包含共享的业务逻辑,并在其上构建了特定于平台的实现。
来源:packages/lib/BaseApplication.ts packages/app-desktop/app.ts), packages/app-mobile/root.tsx)
Joplin 被组织成一个包含多个包的单体仓库
包的依赖关系定义在每个包的 package.json 文件中
来源:package.json), packages/lib/package.json), packages/app-desktop/package.json), packages/app-mobile/package.json), packages/server/package.json
Joplin 的数据模型围绕相互构建的模型层次结构进行组织
BaseModel 类(BaseModel.ts)为 Joplin 中的所有数据模型提供了基础。它负责
BaseItem 类扩展了 BaseModel 并添加了用户创建内容共有的功能
Joplin 中的主要数据模型包括:
来源:packages/lib/BaseModel.ts), packages/lib/models/BaseItem.ts), packages/lib/models/Note.ts), packages/lib/models/Folder.ts), packages/lib/models/Resource.ts)
设置系统跨平台管理应用程序配置
设置系统的主要功能
设置定义在 Setting.ts 中,并附带支持类
FileHandler 用于加载/保存到设置文件来源:packages/lib/models/Setting.ts)
同步引擎允许数据在设备之间以及与各种同步目标之间进行同步
Synchronizer 类(Synchronizer.ts)负责
同步过程
来源:packages/lib/Synchronizer.ts), packages/app-desktop/gui/Sidebar/Sidebar.tsx)
BaseApplication 类为所有 Joplin 应用程序提供了基础
BaseApplication 负责
redux.ts 文件实现了基于 Redux 的状态管理系统,包括
来源:packages/lib/BaseApplication.ts), packages/lib/reducer.ts), packages/app-desktop/app.ts), packages/app-mobile/root.tsx)
Joplin 使用数据库抽象层来支持不同的平台和数据库后端
JoplinDatabase 类扩展了 Database 类,提供
这种抽象允许 Joplin 根据平台使用不同的数据库后端,同时保持一致的数据访问模式。
来源:packages/lib/JoplinDatabase.ts), packages/lib/BaseModel.ts)
Bridge 组件连接核心库和特定平台 API
Bridge 系统为特定平台功能提供抽象
来源: packages/app-desktop/bridge.ts), packages/app-desktop/ElectronAppWrapper.ts)
这些核心组件为所有 Joplin 应用程序提供了基础,实现了跨平台的统一体验。模块化架构允许平台特定的实现构建在共享代码之上,确保了数据兼容性和功能对等性。
每个客户端应用程序(桌面、移动、CLI)都扩展了这些核心组件,以实现其用户界面和平台特定的功能。服务器组件提供了同步、共享和多用户功能。