这份 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。