Tldraw 是面向 React 的开源无限画布开发库,支持在网页中构建具备绘图、文本输入、媒体嵌入等功能的交互式白板应用。
packages
:存放核心功能包,如绘图引擎、工具集等
apps
:示例应用模块,包含多个演示项目
templates
:项目模板,用于快速初始化开发环境
1、克隆代码仓库:
git clone https://github.com/tldraw/tldraw.git
2、安装依赖:
先通过 npm i -g corepack
启用 Yarn 核心包管理,然后执行 yarn
安装所有依赖
3、启动本地开发服务器:
运行 yarn dev
后,访问 http://localhost:5420
查看示例应用
基础集成
通过 NPM 安装核心包:
npm install tldraw
在 React 组件中引入并渲染画布:
import { Tldraw } from 'tldraw';
import 'tldraw/tldraw.css';
export default function App() {
return (
<div style={{ position: 'fixed', inset: 0 }}>
<Tldraw />
</div>
);
}
此时会呈现一个基础画布,支持画笔绘制、文本输入、缩放平移、撤销重做等功能。
数据持久化
通过 persistenceKey
属性开启本地存储:
<Tldraw persistenceKey="your-project-key" />
该配置会使用浏览器本地存储,实现画布内容在刷新页面或跨标签页时的同步。
实时协作功能
1、安装协作库:
npm install @tldraw/sync
2、使用协作钩子创建共享存储:
import { useSyncDemo } from '@tldraw/sync';
const store = useSyncDemo({ roomId: 'unique-room-id' });
<Tldraw store={store} />
不同设备或窗口访问相同 roomId
时,可实现实时 cursor 同步、用户状态显示、视角跟随等协作功能。
通过 API 控制画布
利用 onMount
回调获取编辑器实例,实现程序化操作:
const handleMount = (editor) => {
// 创建文本形状
editor.createShape({
type: 'text',
x: 200,
y: 200,
props: { richText: toRichText('Hello world!') }
});
// 全选并平滑缩放至选中内容
editor.selectAll();
editor.zoomToSelection({ animation: { duration: 5000 } });
};
<Tldraw onMount={handleMount} />
Editor
实例提供丰富 API,可控制形状创建、选择、变换、布局等操作,更多内容参考官方 API 文档 https://tldraw.dev/docs/api/editor
。
目录/文件 | 功能描述 |
---|---|
.github |
GitHub 工作流配置(如 CI/CD) |
.husky |
Git 钩子脚本,用于代码校验 |
assets |
国际化文本、图标等静态资源 |
internal |
内部工具包,非公开 API |
CHANGELOG.md |
版本变更记录 |
LICENSE.md |
授权协议(需保留「Powered by tldraw」水印) |
package.json |
项目依赖与脚本配置 |
定制化开发
1、自定义形状:通过继承 Shape
类实现自定义图形渲染逻辑
2、工具扩展:开发自定义工具,如流程图工具、原型设计工具等
3、界面定制:覆盖 CSS 样式或替换 UI 组件,适配品牌视觉风格
4、数据同步:集成自有后端实现数据持久化,替代默认的本地存储或协作方案