本文档提供了 drawio-desktop 代码库组织和架构的概述。它解释了主要组件及其关系,重点关注应用程序的核心结构。有关开发设置过程的信息,请参阅 设置。
drawio-desktop 代码库组织如下:
来源: .gitignore sync.cjs src/main/electron.js src/main/electron-preload.js src/main/disableUpdate.js
该应用程序遵循 Electron 的进程架构,具有明确的关注点分离
来源: src/main/electron.js5-6 src/main/electron.js64-76 src/main/electron-preload.js1-4 src/main/electron-preload.js36-72
主进程负责:
主入口点 src/main/electron.js 创建 Electron 应用程序窗口并设置各种操作的事件处理程序。
预加载脚本 src/main/electron-preload.js 使用 Electron 的 contextBridge API 创建了主进程和渲染器进程之间的安全桥梁。这使得
来源: src/main/electron-preload.js6-24 src/main/electron-preload.js36-72
draw.io 桌面应用程序构建于核心 draw.io Web 应用程序之上,该应用程序被包含为一个 Git 子模块
两个代码库之间的关系通过以下方式管理:
sync.cjs 脚本同步 draw.io 子模块和桌面应用程序之间的版本号来源: sync.cjs7-14 src/main/electron.js75-76
应用程序启动时遵循以下初始化顺序:
来源: src/main/electron.js147-346 src/main/electron.js356-372 src/main/electron.js897-937
应用程序实施了多项安全措施:
这创建了一个沙箱环境,渲染器进程在该环境中功能受限,并且必须通过 contextBridge 使用暴露的 API 来执行特权操作。
来源: src/main/electron.js358-389 src/main/electron.js1224-1255
更新系统允许应用程序检查和应用更新
更新系统可以通过以下方式进行配置:
--disable-update 或 --silent-update 来控制更新行为来源: src/main/disableUpdate.js1-4 src/main/electron.js19-25 src/main/electron.js1258-1361
应用程序的构建过程包括同步 draw.io 子模块和桌面应用程序之间的版本
此同步确保桌面应用程序的版本与核心 draw.io 引擎的版本匹配,从而保持两个代码库之间的一致性。
来源: sync.cjs7-16
应用程序支持多个窗口,每个窗口都保存在注册表中
窗口通过以下方式创建和管理:
来源: src/main/electron.js64 src/main/electron.js147-347
drawio-desktop 代码库遵循标准的 Electron 架构,主进程和渲染器进程之间有清晰的划分。主进程负责处理系统级操作,而渲染器进程负责显示 draw.io 网页应用程序。两者之间的通信通过 preload 脚本和 contextBridge 进行安全通信。
该应用程序在设计时就考虑了安全性,实施了各种限制措施,以防止未经授权的访问并确保安全运行。更新系统提供了处理更新的灵活性,而构建过程则确保了桌面应用程序与核心 draw.io 引擎之间的一致性。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(f1ed8e)