从GrapesJS开始
告诉我们编辑器需要做什么,它存在哪个应用程序中,并获得一个具体的集成方案。
从GrapesJS开始比较两种开源方法来构建可视化编辑器、页面构建器和SaaS编辑体验。了解 GrapesJS 和 Craft.js 在架构、React 集成、编辑器基础设施、定制、可扩展性、存储和生产开发上的差异。
React-first 编辑器基础
编辑器是你设计的React应用程序。
更完整的可视化编辑器基础
编辑组成员齐全到达;你扩展它。
关于你的堆栈、输出以及你想拥有多少编辑器的五个问题。结果会列出驱动它的答案,这样你可以在具体细节上不同意,而不是结论。
这两个项目都是开源框架,你安装到你已经拥有的应用中。区别在于它们从哪里开始。
你的应用程序是React,编辑器也是React应用程序。
信号
你用一个作为组件模型的编辑模型来交换到第一次编辑的时间。
请阅读Craft.js的文档你需要一个能正常工作的可视化编辑器来扩展,而不是用一组原语来组装。
信号
你用一个已经在第一天就开始工作的编辑,牺牲了一些架构上的自由。
从GrapesJS开始页面的其他部分也取决于这个决定。两个框架都给你一个节点树、拖拽和序列化。它们的不同之处在于编辑器在树周围已经存在多少内容。
React → Craft.js →你的组件→编辑器 UI
Craft.js 提供节点树、拖拽行为、历史和序列化。用户看到的一切——面板、工具栏、属性控件、块面板——都是你用自己组件编写的 React。这就是设计的意义,而不是空白。
你的应用→ GrapesJS →后端
框架已包含的编辑器子系统
GrapesJS 提供了一个可用的编辑器:画布、组件模型、块调色板、可视化样式管理器、图层树、资产管理器、命令注册表和存储层。你可以重新设计它,替换面板,添加插件——但你不会一开始就写插件。
Craft.js 给你一个以 React 为先的基础。GrapesJS 给你一个更广泛的视觉编辑器基础。
这两个框架都不是平台。它们都不提供CMS、托管、认证、用户账户、计费、权限、多租户或发布流水线。这些都属于应用双方,任何将它们归为同一列的比较都是错误的衡量标准。
读单元格,不要勾选或划号。“需要你的编辑器实现”并不等同于“缺失”,“你的应用”也不等于“不支持”——这张表底部三分之一的大部分内容两者都是相同的,因为它们都是框架而非产品。
| 能力 | GrapesJS | Craft.js |
|---|---|---|
| 主要架构 | 可视化编辑器框架 | React 编辑器框架 |
| React 依赖 | 可选 | 必修 |
| 框架灵活性 | 框架无关性 | 仅限React |
| 画布 | 内置 | 框架功能 |
| 拖放 | 内置 | 内置 |
| 组成部分 | 内置 | 框架功能 |
| 方块 | 内置 | 需要你的编辑器实现 |
| 层次 | 内置 | 官方配套包 |
| 样式管理 | 内置 | 需要你的编辑器实现 |
| 资产 | 内置 | 需要你的编辑器实现 |
| Commands | 内置 | 自定义实现 |
| 设备预览 | 内置 | 需要你的编辑器实现 |
| 响应式编辑 | 内置 | 需要你的编辑器实现 |
| 撤销/重做 | 内置 | 内置 |
| 自定义编辑器 UI | 内置,完全可定制 | 你从头到尾 |
| 自定义组件 | 内置 | 框架功能 |
| 自定义方块 | 内置 | 需要你的编辑器实现 |
| 模板 | 通过插件 | 自定义实现 |
| 存储集成 | 内置 | 应用责任 |
| JSON / 项目数据 | 内置 | 内置 |
| HTML/CSS 输出 | 内置 | 自定义实现 |
| React 组件渲染 | React 编辑器 UI ;画布渲染 HTML | 模型原生 |
| 电子邮件工作流程 | 通过插件 | 自定义实现 |
| MJML | 通过插件 | 不适用 |
| 插件生态系统 | 插件加上市场 | 小型生态系统 |
| API 可扩展性 | 内置 | 框架功能 |
| 自托管 | 支持 | 支持 |
| 白标 | 内置,完全可定制 | 你从头到尾 |
| SaaS 嵌入 | 应用责任 | 应用责任 |
| 自定义后端 | 应用责任 | 应用责任 |
| 自定义数据库 | 应用责任 | 应用责任 |
| 认证 | 应用责任 | 应用责任 |
| 权限 | 应用责任 | 应用责任 |
| 出版 | 应用责任 | 应用责任 |
| 多租户 | 应用责任 | 应用责任 |
上面每一行都是从每个项目自己的文档、仓库和npm注册表条目中读取的 2026-09-03. 当能力通过框架自身的生态系统可达时,细胞会明确表示,而不是标记其缺失。资料来源: Craft.js 概述 · Craft.js 编辑器 API · Craft.js 层封装 · Craft.js 在 npm 上 · GrapesJS 文档 · GrapesJS 在 npm 上
受欢迎程度不是技术性论点,这张表也不是结论。之所以在这里,是因为发布节奏和社区规模会影响你在出现故障时等待答案的时间——这才是真正的工程成本,而星数本身则不同。
| 包装 | 最新版本 | 许可 | 发表 | 存储器星 |
|---|---|---|---|---|
| grapesjs | 0.23.6 | BSD-3-Clause | 2026-08-25 | 26,185 |
| @craftjs/core | 0.2.12 | MIT | 2025-02-14 | 8,738 |
请阅读上述日期的npm注册表和GitHub API。这两个仓库均未被归档。Craft.js仍运行在0.2.x系列,其最新版本比本页早了一年多;存在0.3.0 alpha版本,但自2022年以来未更新。这是一个值得在多年承诺前了解的事实——单凭这一点并不足以排除该项目,目前运行的团队也未被困住。 Craft.js 将 React 声明为跨节点的对等依赖 React 16.8 – 19. Craft.js 还发布了两个配套软件包: @craftjs/layers 以及 @craftjs/utils.
本页最有用的专栏。它不是每个框架缺失的清单——而是工作落点的清单。
| 能力 | Craft.js | GrapesJS |
|---|---|---|
| 编辑基金会 | 框架 | 框架 |
| 画布 | 核心编辑器架构 | 内置 |
| 组件模型 | 面向React的 | 内置 |
| 方块 | 需要你的编辑器实现 | 内置 |
| 样式控制 | 需要你的编辑器实现 | 内置 |
| 层次 | 官方配套包 | 内置 |
| 资产管理 | 需要你的编辑器实现 | 可得 |
| 设备控制 | 需要你的编辑器实现 | 可得 |
| Commands | 核心编辑器架构 | 可得 |
| 存储 | 应用 / 集成 | Storage Manager |
| 定制UI | 完全控制 | 高度可定制 |
“需要你的编辑器实现”意味着框架会给你状态和APIs,你自己渲染表面。对于想让表面成为他们自己的团队来说,这就是功能。对于本季度需要工作编辑器的团队来说,是时间安排。
这两列都不是捷径。其中一列只是从更前面开始,另一列则从接近你自己组件模型的地方开始。
本页上的每个优势都有相应的代价。这里它们并排展示,形状相同,大小相同。
最适合那些希望拥有React原生架构和自设计编辑器界面的团队。
成本是设计编辑器界面。回报是编辑器完全符合你的架构。
最适合那些希望扩展可视化编辑器基础设施的团队。
代价是学习别人设计的架构。回报是一个已经能用的编辑器。
官方演示:将方块拖到画布上,在样式管理器中编辑样式,切换设备宽度,检查层树。没有插件,没有配置——这就是核心内容。
来自第三方来源的加载
这三者都运行同一个开源引擎。它们的区别在于配置、面板和插件——这正是“可扩展可视化编辑器框架”的实际形态。演示只有在你选择加载后,才会从第三方来源加载。
这是大多数读者真正会想到的问题,而坦率的答案则各有不同。
编辑器不是你React应用中的组件——它是你的React应用。
信号
画布渲染的组件和制作渲染的相同。没有镜像,没有漂移。
React只是你堆栈的一部分,而不是全部。
信号
编辑器 UI 可以是 React,而画布保持 HTML——这正是它便携的原因。
画布才是真正的区别。Craft.js 在编辑器中渲染你的 React 树;GrapesJS 编辑 HTML 文档,给你生成的 HTML 和 CSS。React 设计系统可以在 GrapesJS 中作为编辑器组件表示,但它只是表示,保持与生产同步是你需要提前规划的工作。
GrapesJS 可以作为不同前端环境的编辑器基础,而 Craft.js 则专门围绕 React 设计。
GrapesJS
请仔细阅读。该引擎是一个 JavaScript 库,挂载到 DOM 元素上,这也是它能在上述任何前端环境中使用的原因。这并不意味着每个前端环境都有官方包装器:有官方的 React 封装器,Vue 和 Angular 集成是模式而非包。下面的每个框架页面展示了实际的集成代码。
编辑器只是众多表面中的一个,也是任何一个框架唯一对它有看法的。它周围的所有东西都归你所有。
GrapesJS
如果用Craft.js代替GrapesJS,这个图看起来也是一样的。这两个框架都不提供认证、组织、计费、权限或数据库,暗示相反的比较其实是在推销某种东西。
同一编辑表面进入产品后会呈现六个形状。每个形状都有独立页面的详细介绍。
编辑器可以成为你应用的原生部分,而不是作为独立的托管服务。两个框架都支持这一点;区别在于你在发布前组装了多少表面。
你拥有的
应用壳
开源
编辑引擎
你拥有的
数据层
请求路径
合适的编辑器框架应该能让你围绕用户实际使用的组件构建编辑体验。这两个框架都能做到这一点;它们在组件的定义上有所不同。
从设计系统到画布
区块集是产品决策,而非框架功能。这些是大多数团队最终最先发布的部分——受限、品牌化且安全,可以交给非技术用户。
标题、支持文案和主要行动,布局锁定。
规划栏目时,请基于您自己的数据,而非自由文本。
一个可重复的网格,计数有界,图标来自你的集合。
仅限品牌认可颜色选项的单一转换戒指。
网站导航,用户可以填充,但不能重组。
这些字段连接到你的终端,验证由你控制。
引用和出处均取自记录,而非重新输入。
一个绑定在真实产品上的商业地块,而不是产品的图片。
用户无法突破的约束比一张什么都可能的画布更有价值。
两个框架都是序列化状态并交给你。都不存储状态。GrapesJS 提供带有加载和存储回调功能的 Storage Manager;Craft.js 给你序列化的节点树,并保留对应用的传输。
持久化路径
你的应用拥有后端架构。这两个框架都不提供数据库、API、版本管理、发布或CDN,上面的列表是你已经运行的程序列表,不是任何项目都提供的功能。
电子邮件是最明显的两种框架不可互换的情况。GrapesJS 可以通过预设扩展用于电子邮件编辑工作流程,这些预设交换了块集和导出格式;Craft.js 没有对应的路径,因为它的输出是 React 树而非标记。
邮件路径
这些都不是自动的。邮件编辑器需要一个对表格安全的块集、导出步骤以及跨客户端测试——引擎消除的是画布问题,而不是邮件问题。
这两个框架都允许你从相反方向拥有表面:用Craft.js你写它,所以默认属于你;用GrapesJS你替换框架已经提供的接口。三个层级,按团队通常达到的顺序排列。
用户在第一屏幕上看到的部分。
你的产品已经用来表达这些想法的词汇。
每个用户到底被允许做什么。
最后一层是没有任何编辑器框架提供的。角色、审批和审计是本次比较双方的应用功能。
已根据每个包裹当前的注册记录和许可文件在下一个日期进行核对,因为本网站过去发布过不一致的许可信息。
| 包装 | 许可 | 资料来源 |
|---|---|---|
| grapesjs | BSD-3-Clause | 许可 |
| @grapesjs/react | MIT | 许可 |
| @craftjs/core | MIT | 许可 |
| GJS.Market | 按产品商业术语 | 市场 |
市场产品由作者单独授权;条款会在结账前显示在每个产品页面上。 GrapesJS 核心及其 React 封装采用不同的许可证——核心不是 MIT。Craft.js 将所有包统一发布在同一许可下。
这是每个包裹发布的许可证声明,不是法律建议。阅读许可证文件,并与你自己的分发模式进行核对。 许可证重读 2026-09-03.
本页没有具体的工时数字。“四十小时与三百二十小时”完全取决于你的团队、你的设计和完成的定义,任何引用这些内容的页面都是猜测。接下来是双方的工作内容,你可以根据自己的速度进行定价。
在你拥有用户可用的编辑器之前,可能先进行工程工作。
更多的编辑器基础设施已经存在,这减少了从零开始实现的编辑器专用基础设施。但这并不会将其归零。
两列都指向同一个地方:一个用户可以使用的编辑器,而你仍然需要在一个需要开发的应用程序中。区别在于你的团队先写哪一行。
从核心编辑器开始,添加产品真正需要的功能。以下每条商品都是真实且当前发布的产品——价格在建立本页面时从目录中实时读取。
编辑器面板以React组件表单渲染,这样编辑器界面就能匹配周围的应用。
为React托管编辑器设置的起始点,而不是空白初始化调用。
这是一个 React 组件作为可编辑块暴露在画布上的示例。
这是在将编辑器接线到你自己的React树之前,需要阅读的最小整合。
对于白标编辑器来说,起点是一个替换整个shell的预设,而不是添加插件——上面三个演示正是这些,每个都是一个产品。
目录中有两个真正由AI驱动的列表,而不是完整的AI分类。它们在这里命名,而不是单独设立一个板块:AI分类中心背后没有发布任何内容,所以让读者去那里会浪费点击。
从核心编辑器开始,添加你产品真正需要的功能。
目录已核实 2026-09-03. grapesjs-gpt-plugin · grapesjs-image-ai-thumbai
十四个需求,每个要求指向的框架。其中三个指向两个,因为对于这些需求,任一框架都可以,假装不行会让这张表的其他部分变得不那么可信。
| 需求 | 更合身 |
|---|---|
| React 首编辑器 | Craft.js |
| 深度 React 组件编辑 | Craft.js |
| 打造你自己的编辑器用户体验 | Craft.js |
| 最大React原生控制 | Craft.js |
| 编辑器仅供开发者使用 | Craft.js |
| 框架无关编辑器 | GrapesJS |
| 内置可视化编辑器基础设施 | GrapesJS |
| HTML/CSS 视觉编辑 | GrapesJS |
| SaaS 页面构建器 | GrapesJS |
| 电子邮件和页面编辑器合一 | GrapesJS |
| 现有编辑器生态系统 | GrapesJS |
| 你自己存储的JSON项目数据 | 两者皆可 |
| 无供应商自托管 | 两者皆可 |
| 开箱即用复原重做 | 两者皆可 |
你的产品处于什么位置?
编辑器必须输出一个实时的 React 组件树
Craft.js
这就是Craft.js存在的理由。没有任何GrapesJS插件能改变它的画布是HTML的事实。
你要设计每一个面板并自己控制
Craft.js
Craft.js期望你渲染表面,所以不需要先更换任何东西。
编辑器仅供你自己团队的开发者使用
Craft.js
专门打造的React编辑器比你已经缩小范围的通用编辑器维护成本更低。
编辑器必须在React之外运行,现在或以后
GrapesJS
GrapesJS 安装在 DOM 元件上,因此任何前端环境都能访问。
这学期你需要一个可用的编辑器
GrapesJS
画布、块、样式、图层和资源已经存在并且可以协同工作。
你需要同时进行页面和邮件创作
GrapesJS
一个引擎通过电子邮件预设覆盖了这两者;React 树不会变成电子邮件标记。
Craft.js 为 React 团队提供了构建自定义编辑器的灵活基础。GrapesJS 为团队提供了更广泛的可视化编辑器基础,可以集成、定制和扩展以适应生产应用。
告诉我们编辑器需要做什么,它存在哪个应用程序中,并获得一个具体的集成方案。
从GrapesJS开始预设、块库、存储适配器和电子邮件组件——这些都是大多数团队会先写出来的部分。
探索插件设计系统变成了模块,存储接到了你的API上,面板重建以匹配你的产品。
咨询专家选择与你的架构相匹配的编辑器基础——然后围绕它构建产品。