# plait
**Repository Path**: anydev/plait
## Basic Information
- **Project Name**: plait
- **Description**: 国内开源、插件化的一站式前端绘图白板底层框架,用来自研在线白板、流程图、思维导图、自由手绘类协同工具。
框架核心不绑定任何前端 UI 框架,原生适配 React / Angular,内置插件扩展体系,文本编辑能力基于你之前了解的 Slate 富文本框架实现,可以在画布内直接做富文本、表格、代码块等复杂图文编辑,也是 PingCode Wiki 内置协同白板的底层技术底座。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-17
- **Last Updated**: 2026-06-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Plait 是一款现代化的画图框架,提供插件机制,允许开发者通过插件的方式扩展画图功能,特别适用于交互式白板工具的开发。
Plait 底层不依赖任何前端 UI 框架,但是它为集成到主流的前端 UI 框架提供了解决方案,以保证上层开发者的开发体验、复用主流的框架组件。
当前已支持功能插件:
- 思维导图插件
- 流程图插件
- 图形可视化插件
- 流程编排插件

- 👉 [在线示例 (流程图)](https://https://plait.pages.dev?init=draw)
- 👉 [在线示例 (思维导图)](https://https://plait.pages.dev?init=mind)
- 👉 [在线示例 (图形可视化)](https://https://plait.pages.dev/graph-viz?init=force-atlas)
- 👉 [在线示例 (流程控制)](https://https://plait.pages.dev/flow)
- 👉 [在线文档](https://plait-docs.pages.dev)
#### 框架特性
- 不依赖 UI 框架
- 提供基础画板能力,比如放大、缩小、移动
- 插件机制,提供插件机制用于扩展画图功能
- 数据模型,提供基础数据模型及数据变换函数(支持协同)
- 基础画图工具函数
#### UI 框架集成
框架落地需要以前端 UI 框架组件作为载体,这样可以保证画图图功能开发沿用主流开发模式进行(数据驱动),当前已支持 Angular 和 React 框架的集成。
Plait 中的文本渲染基于 Slate 框架,实现画板中富文本的渲染和编辑,Slate 是一款优秀的富文本编辑器框架,Plait 在设计上就是一 Slate 框架为灵感。
#### 模块
| 包名 | 说明 |
| -------------------- | -------------------------------------------------------------------------- |
| @plait/core | 框架核心:插件机制设计、提供数据模型、数据变换函数、放大、缩小、滚动等方案 |
| @plait/common | 交互画图业务通用功能、文本渲染与编辑 |
| @plait/text-plugins | 文本扩展通用功能、UI 框架无关、依赖 Slate 富文本编辑器框架 |
| @plait/mind | 思维导图插件,基于独立的自动布局算法,支持:逻辑布局、标准布局、缩进布局 |
| @plait/draw | 流程图插件,支持:基础图形、流程图图形、连线、自由图片等 |
| @plait/flow | 流程编排插件,支持:标准节点、连线、自定节点与连线 |
| @plait/graph-viz | 数据可视化插件,支持:知识图谱 |
| @plait/layouts | 思维导图布局算法 |
| @plait/angular-text | 文本渲染组件,依赖 Angular 框架、富文本编辑器框架 Slate、Angular 视图层 |
| @plait/angular-board | 白板视图层组件,依赖 Angular 框架 |
| @plait/react-text | 文本渲染组件,依赖 React 框架、富文本编辑器框架 Slate、React 视图层 |
| @plait/react-board | 白板视图层组件,依赖 React 框架 |
React 视图层、文本渲染组件:[https://github.com/plait-board/drawnix](https://github.com/plait-board/drawnix)
#### 谁在使用
- 🔥🔥🔥 [PingCode Wiki](https://pingcode.com/solutions/knowledge-manage)
- 🔥🔥🔥 [Drawnix](https://github.com/plait-board/drawnix)
### 开发
```
npm i
npm run build
npm run start
```
### 使用
基本使用(集成 @plait/mind 插件)
HTML 模版:
```
```
TS 文件:
```
// .ts
@Component({
selector: 'board-basic',
templateUrl: './board-basic.component.html',
host: {
class: 'board-basic-container',
},
})
export class BasicBoardComponent {
plugins = [withMind];
value: PlaitElement[] = demoData;
board!: PlaitBoard;
change(event: OnChangeData) {
// console.log(event.children);
}
initialized(value: PlaitBoard) {
this.board = value;
}
}
```
更详细的示例说明参考: [https://github.com/pubuzhixing8/plait-basic](https://github.com/pubuzhixing8/plait-basic)
### 感谢
- [slate](https://github.com/ianstormtaylor/slate)
- [slate-angular](https://github.com/worktile/slate-angular)
- [rough](https://github.com/rough-stuff/rough)
### 贡献
欢迎大家贡献 Plait ,一起构建新一代的画图框架,任何的 Issue、PR 都是可以,也希望得到大家的 ⭐️ 支持。
### 开源协议
[MIT License](https://github.com/worktile/slate-angular/blob/master/LICENSE)