本文档概述了 Joplin 生态系统中的客户端应用程序。它解释了每个客户端应用程序的架构、技术和实现细节:桌面版、移动版和命令行界面(CLI)。有关支持这些客户端的核心组件的信息,请参阅 核心组件。
Joplin 提供三种主要的客户端应用程序,它们共享相同的核心业务逻辑,同时提供特定于平台的最佳用户体验。
来源:package.json packages/app-desktop/package.json packages/app-mobile/package.json packages/app-cli/package.json packages/lib/package.json packages/renderer/package.json
所有客户端应用程序都遵循常见的架构模式,使用相同的核心库并实现相似的数据流。
来源:packages/lib/package.json README.md
所有客户端应用程序共有的组件包括
桌面应用程序使用 Electron 构建,为 Windows、macOS 和 Linux 提供跨平台桌面体验。
来源:packages/app-desktop/package.json
桌面应用程序使用 Electron Builder 进行打包,该工具会创建特定于平台的安装程序和软件包。
构建配置定义在 packages/app-desktop/package.json 文件中,位于 build 属性下。
来源:packages/app-desktop/package.json29-128
移动应用程序是使用 React Native 为 Android 和 iOS 平台构建的。
来源:packages/app-mobile/package.json packages/app-mobile/index.js
移动应用程序遵循 index.js 文件中描述的单向数据流。
React => SQLite => Redux => React
来源:packages/app-mobile/index.js1-8
移动应用程序包含特定于平台的代码和配置,用于:
来源:packages/app-mobile/package.json73-77
命令行界面(CLI)应用程序提供基于终端的 Joplin 功能访问。
来源:packages/app-cli/package.json
CLI 应用程序提供与 Joplin 交互的各种命令,包括:
来源:packages/app-cli/package.json39-42
| 功能 | 桌面 | 移动端 | CLI |
|---|---|---|---|
| UI 框架 | React | React Native | terminal-kit |
| 主要技术 | Electron, React, Redux | React Native, Redux | Node.js |
| 离线支持 | 是 | 是 | 是 |
| 同步能力 | 是 | 是 | 是 |
| 插件支持 | 是 | 否 | 否 |
| 富文本编辑器 | 是 | 有限 | 否 |
| Markdown 编辑器 | 是(CodeMirror) | 是(基本) | 是(外部编辑器) |
| 平台 | Windows、macOS、Linux | Android、iOS | 任何支持 Node.js 的平台 |
来源:packages/app-desktop/package.json packages/app-mobile/package.json packages/app-cli/package.json
所有客户端应用程序都共享几个通用组件
来源:packages/app-desktop/package.json160-169 packages/app-mobile/package.json23-31 packages/app-cli/package.json43-46
核心库包含所有业务逻辑、数据模型和同步功能,这些都是所有客户端应用程序共享的。这包括:
渲染器组件负责将 Markdown 内容转换为 HTML 以进行显示。所有客户端都使用它,以确保笔记在不同平台上的渲染一致性。
代码库中使用的通用工具和辅助函数。
来源:packages/lib/package.json packages/renderer/package.json packages/tools/package.json