Excalidraw 评测:可嵌入的 MIT 手绘风白板,协作与加密留给宿主应用
用于绘制手绘图的虚拟白板
秒懂
- 它是什么?
- Excalidraw 是一个用 TypeScript 编写的手绘风白板编辑器,以 npm 包形式供 React 应用嵌入。其核心价值在于开放格式和可定制性,但实时协作与端到端加密仅存在于官方托管站点,尚未作为插件开放。
- 适合谁用?
- Excalidraw 适合需要在自家 React 应用中快速嵌入手绘风白板的团队,尤其是看重开放 .excalidraw 格式和 MIT 许可的开发者。不适合需要开箱即用实时协作或端到端加密的团队,因为这两项能力目前只存在于 excalidraw.com,npm 包并未提供。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库在最近一天内有新的提交。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题,谁需要它
Excalidraw 解决的是在 Web 应用里快速获得一块手绘风白板的问题。它不是一个独立产品,而是一个 npm 包,名为 @excalidraw/excalidraw。你可以把它嵌入到自己的 React 应用里,获得无限画布、矩形、圆形、箭头、自由绘制等工具,以及导出 PNG、SVG 和剪贴板的能力。适合的对象很明确:正在开发需要绘图功能的 SaaS 产品、笔记工具或协作平台的工程师。Obsidian 的 Excalidraw 插件、CodeSandbox 和 Replit 都做了这种集成,这从 README 列出的名单可以确认。如果你只是偶尔画个流程图,直接访问 excalidraw.com 就够了,不需要碰代码。
核心机制:开放格式与可定制画布
Excalidraw 的底层机制围绕两个设计选择。第一,画布是无限且基于 canvas 的,所有元素以 JSON 结构保存在内存中,导出时序列化为 .excalidraw 文件。这个格式是开放的,意味着你可以读取、修改甚至用脚本生成绘图数据,然后交给 Excalidraw 渲染。第二,编辑器本身是可定制的,支持暗色模式、本地化(i18n)和形状库。README 明确列出这些特性。对于开发者来说,这意味着你拿到的不是一个黑盒白板,而是一个可编程的组件。不过要留意,协作和端到端加密这两个卖点只在 excalidraw.com 上出现,npm 包目前没有提供这些功能,README 只说“未来”会作为插件加入。
集成方式:安装与最小示例
集成 Excalidraw 的步骤在 README 里写得很短。先安装依赖,命令是 npm install react react-dom @excalidraw/excalidraw,或者用 yarn add。注意它要求你已经有 React 环境,它不是一个独立框架,而是 React 组件。安装后,你需要在 React 组件里导入并渲染 Excalidraw 组件,但 README 没有给出具体的代码片段,只指向文档站点。这意味着实际接入时你需要查阅 docs.excalidraw.com 来了解 props、事件回调和样式覆盖。仓库的目录结构显示 excalidraw-app 是托管在 excalidraw.com 的示例应用,它的源码可以作为参考,但直接复制它的代码可能包含协作和加密逻辑,这些逻辑依赖后端服务,不能原样搬到你自己的应用里。
局限性:协作与加密的缺失
最大的局限是协作功能没有进入 npm 包。README 在描述 excalidraw.com 时列了实时协作、端到端加密、本地优先自动保存和只读分享链接,但这些都绑定在官方托管应用上。如果你在自己的应用里嵌入 Excalidraw,用户只能单机绘图,没有多人同时编辑,没有端到端加密,也没有自动保存。这些功能需要你自己实现,或者等待官方未来的插件。另一个局限是版本节奏:v0.17.3 发布于 2024 年 2 月,v0.18.0 在 2025 年 3 月,v0.18.1 在 2026 年 4 月,间隔很长,且次版本号跳跃可能包含破坏性变更。如果你的项目长期不升级,可能错过修复,但升级时又需要重新测试。对于只需要简单图表的场景,引入整个编辑器显得过重,性能上 canvas 渲染大量元素时也可能需要你自行优化。
替代方案:对比 tldraw 与 Mermaid
一个直接的替代品是 tldraw,它同样是 React 白板库,但架构上更强调可组合的编辑器状态和自定义工具,适合需要深度控制交互的团队。Excalidraw 则更偏向开箱即用的手绘风格,定制深度不如 tldraw。另一个思路是 Mermaid,它用文本定义图表,渲染为 SVG,适合嵌入文档系统,但它是流程图和时序图,不是自由绘制白板。选择的关键在于你需要的抽象层级:Excalidraw 给你一个完整编辑器,Mermaid 给你一个文本到图形的编译器,tldraw 给你一个可重构的编辑框架。如果你只需要展示静态图表,Mermaid 的文本格式更容易版本控制。如果你需要用户自由画图,Excalidraw 的安装成本比 tldraw 低。
维护成本与许可证
维护成本主要来自 React 生态的版本匹配。Excalidraw 要求 react 和 react-dom 作为 peer 依赖,这意味着你的应用必须使用兼容的 React 版本,升级 React 时可能连带需要升级 Excalidraw。仓库最后推送在 2026 年 4 月,说明项目仍在活跃维护,但版本间隔长,你需要自己关注 release notes。许可证是 MIT,这是宽松许可,允许商业使用、修改和再分发,不要求开源你的衍生代码。但要注意,Excalidraw 的开放格式 .excalidraw 文件不受 MIT 保护,格式本身没有专利或版权限制,你可以自由读写。实际的法律问题,比如是否需要在你的应用中保留版权声明,应该咨询专业人士,这里不构成法律建议。
编辑结论
Excalidraw 适合需要在自家 React 应用中快速嵌入手绘风白板的团队,尤其是看重开放 .excalidraw 格式和 MIT 许可的开发者。不适合需要开箱即用实时协作或端到端加密的团队,因为这两项能力目前只存在于 excalidraw.com,npm 包并未提供。集成前应先确认你的 React 版本与 @excalidraw/excalidraw 的 peerDependencies 兼容,并检查 v0.18.0 升级到 v0.18.1 的变更日志,因为 2024 年到 2025 年间版本跳跃较大,API 可能有破坏性调整。如果你只需要静态图表导出,不必引入整个编辑器,考虑更轻量的绘图库更实际。最终判断:Excalidraw 的价值在于它把复杂的手绘渲染和交互封装成了可嵌入组件,但协作功能缺失意味着它只是画布,不是协作平台。
社区笔记