菜单

概述

相关源文件

本文档介绍了 Joplin 仓库、其架构和关键组件。Joplin 是一款开源的笔记应用程序,支持包括桌面、移动和命令行界面在内的多个平台。其代码库被组织成一个包含多个包的单体仓库,这些包协同工作,提供无缝的笔记体验,并具有同步、端到端加密和 Markdown 渲染等功能。

有关系统特定方面的更详细信息,请参阅此 Wiki 中的其他部分,例如 核心组件客户端应用程序服务器组件

系统架构

Joplin 使用 Yarn workspaces 构建为单体仓库,其中包含多个共享核心功能的包。其架构遵循模块化方法,在核心业务逻辑、平台特定实现和服务之间进行了清晰的划分。

来源:package.json1-121 packages/app-desktop/package.json1-211 packages/app-mobile/package.json1-152 packages/server/package.json1-86 packages/lib/package.json1-108 packages/renderer/package.json1-58

软件包结构

该仓库组织成多个包,每个包负责应用程序的特定方面

描述
@joplin/lib核心业务逻辑、模型和服务
@joplin/rendererMarkdown 渲染引擎
@joplin/utils常用工具函数
@joplin/app-desktop基于 Electron 的桌面应用程序
@joplin/app-mobileReact Native 移动应用程序
@joplin/app-cli命令行界面
@joplin/serverJoplin 同步服务器实现
@joplin/tools开发和构建工具

来源:package.json1-121 packages/app-desktop/package.json1-211 packages/app-mobile/package.json1-152 packages/server/package.json1-86 packages/lib/package.json1-108 packages/renderer/package.json1-58 packages/tools/package.json1-71

核心组件与数据流

Joplin 的核心功能实现在 @joplin/lib 包中,它提供了所有客户端应用程序共享的数据模型、同步引擎和业务逻辑。

来源:packages/lib/reducer.ts1-542 packages/lib/models/Setting.ts1-784 packages/lib/BaseApplication.ts1-552

客户端应用程序

Joplin 提供了多种客户端应用程序,它们共享相同的核心功能,但具有特定于平台的实现

来源:packages/app-desktop/ElectronAppWrapper.ts1-676 packages/app-desktop/bridge.ts1-427 packages/app-desktop/app.ts1-623 packages/app-mobile/root.tsx1-1128

同步系统

Joplin 的一个关键特性是其灵活的同步系统,它支持多种同步目标,并包含端到端加密

来源:packages/lib/models/Setting.ts105-123 packages/app-mobile/root.tsx93-102

设置管理

Joplin 的设置系统非常广泛,可处理不同平台和配置的配置

来源: packages/lib/models/Setting.ts1-784 packages/lib/services/profileConfig/mergeGlobalAndLocalSettings.ts1-40 packages/lib/models/settings/FileHandler.ts1-84

应用程序启动流程

该应用程序的启动过程很复杂,涉及多个阶段来初始化系统。

来源: packages/app-desktop/main.js1-80 packages/lib/utils/processStartFlags.ts1-236 packages/app-desktop/ElectronAppWrapper.ts79-676 packages/lib/BaseApplication.ts84-552 packages/app-mobile/root.tsx93-102

构建与分发系统

构建和分发系统负责多个平台的包编译、打包和部署。

来源: package.json15-65 packages/tools/release-server.ts1-28 packages/app-desktop/integration-tests/util/createStartupArgs.ts1-15

多个应用程序实例

Joplin Desktop 支持同时运行应用程序的多个实例,每个实例都有自己的配置文件。

来源: readme/apps/multiple_instances.md1-40 packages/app-desktop/commands/openPrimaryAppInstance.ts1-12 packages/app-desktop/commands/openSecondaryAppInstance.ts1-14

Redux 状态管理

Joplin 使用 Redux 来管理应用程序的状态。

来源: packages/lib/reducer.ts1-542 packages/lib/reducer.test.ts1-34000 packages/app-desktop/app.reducer.js

本概述提供了 Joplin 系统架构的全面介绍。本 wiki 的后续部分将深入探讨特定组件及其实现。