不可变数据模型内核,编辑状态可追溯、可撤销
fabric photo — TypeScript 工具站模板
作者 ximing
基于不可变数据模型与fabric 6的纯前端图片编辑器,React组件与内核分离,适合深度定制。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
已检查补充预览来源,暂未找到更多可用的页面或手机端截图。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
fabric 6 仅作渲染投影,数据层与渲染层解耦
React 组件包零编辑逻辑,Figma 式界面风格
支持裁剪、旋转、绘图、形状、文本、马赛克等常用编辑
内核支持无头模式,可脱离 UI 使用
真实在线演示,GitHub Pages 部署
模板详细介绍
fabric photo 是一个基于 Canvas 的纯前端图片编辑器项目,核心卖点在于其架构设计:用不可变数据模型(Doc / EditorState / Step / Transaction)驱动编辑状态,fabric 6 仅作为渲染投影,UI 层采用 Figma 式 React 组件。整个仓库以 monorepo 组织,分为内核(@gmi/fp-core)、React 组件包(@gmi/fp-react)和演示站三部分,内核与 UI 完全解耦,甚至可以在无头模式下运行全部编辑语义。
功能上覆盖了常见的图片编辑需求:裁剪、旋转、绘图(涂鸦/直线/箭头)、形状绘制、文本编辑、马赛克涂抹、缩放平移、撤销重做以及导出 PNG/Blob。所有编辑操作都通过 dispatch 提交事务,历史记录基于 Step 反转实现,数据层与渲染层分离,拖拽预览直接修改 fabric 对象,手势结束才提交 Step,这种设计让状态管理更可预测,也方便扩展新工具。
项目提供真实在线演示,可直接体验完整功能。但注意:包尚未发布到 npm,目前仅限仓库内 workspace 引用;fabric 6.x 存在两条已知安全漏洞(SVG 导出路径),作者评估为不可达风险并接受,若你的项目需要 SVG 导出或对安全审计严格,需自行核实。
适合你的项目吗?
适用场景
- 需要深度定制图片编辑器界面的项目
- 希望复用编辑内核、自建 UI 层的场景
- 对状态管理要求高、需要完整操作历史的工具
- 作为学习不可变数据模型与 Canvas 编辑架构的参考
适合人群
- React 技术栈的前端团队
- 需要图片编辑功能的在线工具站
- 对架构可维护性有要求的开发者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
克隆后使用 pnpm 安装依赖,运行 pnpm dev 启动 demo(端口 9876)。
- 2
包未发布 npm,需通过 workspace 引用。
- 3
注意 fabric 6 存在两条已知安全漏洞(SVG 导出路径),项目不调用相关 API,但若需 SVG 导出或安全审计严格,请评估风险。
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明MIT许可证允许免费使用、修改、分发和商用,仅需保留版权与许可声明。
使用时需要遵守
- 保留原作者版权声明和 MIT 许可证声明。
- 在所有副本或实质性部分中包含版权声明和许可声明
额外费用与待核对事项
- README仅链接MIT,未说明截图等演示素材的单独授权
查看原文依据
Permission is hereby granted, free of charge, to any person obtaining a copy
许可证原文
The above copyright notice and this permission notice shall be included in
许可证原文
https://github.com/ximing/fabric-photo/blob/master/LICENSEhttps://github.com/ximing/fabric-photo/blob/HEAD/README.mdPermission is hereby granted, free of char
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-09-24。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 81 / 100
- 技术栈
- TypeScript
- 网站类型
- 工具站
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-08-31
- 截图检查日期
- 2026-09-05
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 TypeScript。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
当前版本没有可核对的编辑审核记录;旧的应用时间不代表已完成事实审核。
这条历史介绍未保存固定版本的来源快照。请对照当前仓库,发现不一致可反馈。
反馈内容错误看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

dillinger
Dillinger 是一个基于 Next.js 14 构建的 Markdown 编辑器,核心编辑能力由 Monaco Editor 提供,因此拥有接近 VS Code 的编辑体验。
TypeScript · 工具站

placemark
Placemark 是一个开源的地图数据创建、查看、编辑与分析工具,主站托管在 Placemark.io,本仓库面向想自行部署或二次开发的开发者。
TypeScript · 工具站

copilot metrics viewer
copilot metrics viewer 是一个面向 GitHub Copilot 的指标可视化工具,帮助组织或企业账户直观了解 Copilot 的使用情况与采纳趋势。
TypeScript · 工具站

cartcut
CartCut 是一个定位为“AI 视频编辑器”的开源项目,核心卖点是基于图层的编辑方式,与常见的轨道式剪辑不同,它允许用户对单个素材叠加多种效果,操作上更接近 After Effects 的思路,但目标是让动态图形创作…
TypeScript · 工具站

resume builder
resume builder 是一个开源的在线简历生成器,项目代号 WTF Resume。 它主打“实时设计”体验:用户无需注册即可通过拖拽方式调整简历版式,所见即所得。
TypeScript · 工具站

color picker
color picker 是一个开源的颜色选择器工具站,由 imathis 开发,提供了实时在线的演示环境。
TypeScript · 工具站
