插件功能
524 字
3 分钟
插件功能
| 思源笔记 | Pixcall(推测为 Eagle 式) | |
|---|---|---|
| 插件语言 | JS/TS(一般用 Vite/Webpack 打包) | HTML/JS |
| 运行位置 | 前端主窗口同一个 JS 上下文,无沙箱 | 独立窗口/WebView,独立渲染进程 |
| 与 UI 宿主通信 | 直接调 siyuan 模块的类/函数 + eventBus 事件 + 可直接碰 DOM/window.siyuan | 注入的全局 pixcall 对象,底层走 Electron IPC |
| 与数据层通信 | HTTP REST API + WebSocket 到 Go 内核 | 通过 IPC 到 Electron 主进程 |
| 隔离/安全 | 几乎没有,插件权限 = 前端权限(桌面端含 Node) | 有进程隔离,能力由 API 白名单决定 |
| 扩展点风格 | 注册式(addTopBar/addDock/addCommand…)+ 事件 | 以”打开一个插件窗口/面板”为主,通过 API 读写素材 |
共同点:都是 Electron 时代典型做法——用 Web 技术写插件、宿主注入 API 对象、UI 和数据分层通信。区别主要在于思源把插件放进宿主同进程换取深度集成(能改编辑器、菜单、任何界面),而 Pixcall/Eagle 这类把插件放进独立窗口换取隔离和稳定。如果你要为它们写插件,思源直接看 siyuan-note/plugin-sample 和 petal 的 siyuan.d.ts 就能摸清全部通信接口;Pixcall 则以官方插件开发文档中 pixcall 对象的 API 列表为准。
| 存储源扩展 | 编辑器扩展 | Eagle 式资源库插件 | |
|---|---|---|---|
| 主要工作 | 网络/磁盘 IO、鉴权、二进制流 | 改编辑器行为、菜单、渲染、快捷键 | 独立的工具界面,读写素材库 |
| 需不需要 UI | 基本不需要(只要一个配置表单) | 深度嵌入宿主 UI | 自带完整 UI |
| 运行位置 | 必须在 Go 侧(前端传二进制流不现实) | 必须在前端同一 JS 上下文(要碰编辑器实例/DOM) | 独立窗口/iframe 即可 |
| 出错后果 | 数据丢失、凭据泄露 → 隔离和稳定性优先 | 界面卡死 → 可接受,重启即可 | 只影响自己窗口 |
| 性能要求 | 高(大文件、并发) | 中 | 低 |
| 谁来写 | 通常是你或少数高级开发者 | 社区 | 社区 |
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章 智能推荐
1
本地资源库视频播放
MO Gallery 本地资源库视频播放
2
Desktop上传链路优化
MO Gallery Desktop上传链路优化
3
配色方案
MO Gallery 配色方案
4
首页UI优化
MO Gallery 首页UI优化
5
通过MCP方式对项目功能测试
MO Gallery 通过MCP方式对项目功能测试
随机文章 随机推荐