Fabric.js Document Engine

搜索文档

查找页面或章节

EN

常见问题

查看 Markdown

用简短的回答解答大家最常问的问题,并附上完整指南的链接。

这份 Fabric.js 常见问题汇总了开发者搜得最多的问题。每个回答都链接到详细讲解的页面。

画布怎么保存为 JSON 再加载回来?

调用 engine.toDocument() 把画布保存为 JSON,调用 engine.loadDocument(json) 加载回来。接了存储适配器后,用 engine.save() 和 engine.load(id)。详见保存和加载。

Fabric.js 有撤销重做吗?

没有。Fabric.js 本身没有历史记录。这个包会为每个用户操作记录一步撤销重做,你只要调用 engine.undo() 和 engine.redo()。详见撤销和重做。

为什么加载后自定义属性丢了?

Fabric.js 只保存它认识的属性。把你的类和额外的属性注册一次,引擎每次保存和加载都会保留它们。详见自定义对象。

怎么按 id 找到对象?

每个对象都有稳定的 id。调用 engine.getObjectById(id),编组里的对象也能找到。

能配合 React、Vue 或 Svelte 用吗?

可以。React 有专门的 hooks,在 fabricjs-document-engine/react 里。Vue、Svelte 等框架用 createDocumentStateStore(engine)。详见 React、Vue 和 Svelte。

能在 Next.js 里用吗?

可以。React 入口已标记 'use client'。Fabric.js 需要浏览器环境,所以要在客户端组件里渲染编辑器。详见 Next.js。

支持哪些 Fabric.js 版本?

Fabric.js 6 和 7。Fabric.js 5 保存的普通 JSON 也能打开。详见兼容性。

需要服务器吗?

不需要。内置的 localStorage 适配器不依赖服务器。真实项目里,用两个函数给你自己的 API 写一个存储适配器即可。详见自定义后端。

导出时为什么报画布被污染(tainted canvas)?

有一张来自其他网站的图片没有开启 CORS。引擎会在导出前检查,并告诉你是哪张图片。详见导出。

两个人能同时编辑吗?

不能实时协作。引擎会发现另一个标签页或设备先保存了,并让用户选择重新加载或保留自己的版本。详见保存冲突。

免费吗?

免费,使用 MIT 许可证。如果这份 Fabric.js 常见问题没有解答你的疑问,请在 GitHub 上提 issue。

Fabric.js 常见问题:保存、撤销、React | Fabric.js Document Engine