画图工具分两种:一种让你画出精确的图,一种让你画出能沟通的图。

Visio、draw.io 属于前者——对齐、标尺、精确控制,适合正式的架构文档。但日常沟通里真正高频的场景是另一种:白板前随手画个流程,会议上划出个结构关系,跟同事解释清楚"数据是怎么流的"。

这种场景要的不是精确,是快,而且看着不那么"正式"。因为太正式的图会让人不敢改。

Excalidraw 就是为这个场景做的:一个开源的手绘风格虚拟白板,协作且端到端加密。

编辑器能力

编辑器本身能做什么

README 把 npm 包的能力和官方站的能力分开列了,这个区分挺重要——因为前者是你可以嵌进自己项目的,后者是现成的应用。

编辑器(npm 包 @excalidraw/excalidraw)支持:

  • 免费开源
  • 无限画布,基于 canvas 的白板
  • 手绘风格
  • 深色模式
  • 可自定义
  • 图片支持
  • 图形库支持
  • 多语言(i18n)
  • 导出 PNG、SVG 和剪贴板
  • 开放格式——可导出为 .excalidraw JSON 文件
  • 工具齐全:矩形、圆形、菱形、箭头、直线、自由绘制、橡皮擦
  • 箭头绑定和带标签的箭头
  • 撤销 / 重做
  • 缩放和平移

最后几个细节值得说:箭头绑定是指箭头能"粘"在图形上,你挪动图形时箭头跟着走——这个功能看着小,实际决定了图能不能快速调整。而开放格式意味着你的图不被锁在某个服务里,随时能导出 JSON 自己处理。

官方站额外提供了什么

excalidraw.com 上那个应用,README 说它是"用 Excalidraw 能构建什么"的最小展示,源码也在这个仓库里。它比 npm 包多了几项:

  • PWA 支持 ——可以离线工作
  • 实时协作 ——多人同时编辑
  • 端到端加密 ——内容在传输和存储上加密
  • 本地优先 ——自动保存到浏览器
  • 分享链接 ——导出成只读链接发给别人

端到端加密加上本地优先,这两个组合起来意味着:协作画图这件事不需要你把内容交给平台。对于画内部架构图、业务流程图的场景,这个属性挺关键。

README 也提到,这些能力未来会作为插件形式提供给 npm 包。

三种使用方式

直接开网页用。 excalidraw.com,不用注册,打开就画。这是最常见的用法。

嵌入到自己的应用里。

npm install react react-dom @excalidraw/excalidraw

如果你在做一个需要画布的产品,可以直接把 Excalidraw 当组件用,省掉从零实现一个白板的成本。

桌面端。 Windows / Linux / macOS 都有桌面应用。

官方站额外提供

谁适合用它

适合:

  • 需要快速画流程图、架构草图、线框图
  • 团队协作画图,而且内容敏感需要加密
  • 在开发一个需要内嵌画布的产品
  • 想用开放格式保存自己的图(不被锁定)
  • 需要离线可用

不太适合:

  • 需要精确尺寸、严格对齐的正式技术图纸(用 draw.io、Visio 更合适)
  • 需要复杂图形库和自动布局(这是专业绘图工具的场景)
  • 团队已经在用某个协作白板且不愿迁移

说点实在的

手绘风格不只是审美选择,它有功能上的意义。

一张精确、漂亮的流程图,别人看到会觉得"这是定稿",然后不好意思提意见。一张手绘风格的草图,别人看到的第一反应是"这是个想法,我可以往上加"。

外观在传递"这个东西可以改"的信号。 在需要协作和讨论的场景里,这个信号比美观重要得多。

这也是为什么 Excalidraw 虽然功能上不如专业绘图工具,但在"讨论阶段"这个特定场景里反而更受欢迎。

技术上还有一点值得提:把编辑器做成 npm 包而不只是一个网站,这个决策让它从工具变成了基础设施。很多产品需要画布能力但不想自己实现,Excalidraw 补的就是这个位置。

项目地址:https://github.com/excalidraw/excalidraw

在线使用:https://excalidraw.com