从GrapesJS开始
为你的堆栈配置一个编辑器,看看集成具体包含什么。
从GrapesJS开始PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验
Framer 是一个托管网站平台,用于设计、发布和管理网站。GrapesJS 是一个开源的可视化编辑器框架,面向希望将页面构建嵌入自身 SaaS、CMS、应用程序或网站的开发者。两者都是好产品。它们回答的问题不同——所以下面的决定不是哪一个赢,而是你是在搭建网站,还是开发包含编辑器的产品。
托管平台
一个供应商回答了这三个问题。
编辑器框架
在你拥有的堆栈里的一个开源层。
在任何功能列表之前,先查看每个产品的形状。Framer 运行从画布到上线网站的连续工作流程。GrapesJS 运行画布——并将结果交给你拥有的代码。
Framer ·集成平台
设计、内容、托管和发布都是同一条工作流上的阶段。你拿到的是完整的一条链路,无需自己拼装。
GrapesJS ·编辑器框架
引擎把编辑层作为独立模块给你。两侧发生的事情是你的应用程序的工作。
由你的应用提供
从抽象角度看,这两种形式都没有更好。集成的工作流程会去除决策;框架会把它们交给你。你想要哪种,取决于编辑器是你发布的产品,还是你已经发布的产品中的一个功能。
如果你只读了一部分,就读这部分。大多数读者可以在这里做出决定。
一个设计、内容和托管都已整合在一起的即用型网站平台。
你得到
你用一个已经运行的工作流程来交换架构控制。
探索Framer一个你安装在已有软件里的编辑图层,周围的每个表面都由你控制。
你得到
你要承担周边的基础设施,换来的是一个真正成为产品一部分的编辑器。
使用 GrapesJS 构建引擎没有添加任何内容:画布、图层、样式、块和响应式设备切换器。
加载第三方页面。直到你点击,什么都不会发送。
三个编辑器,一个引擎。第一个是原装的 GrapesJS 演示;另外两个是 GJS.Market 目录中的网站建设预设,显示是因为读者在与网站设计工具进行比较时,需要看到引擎在不需自定义的情况下达到多远。
Framer 为用户提供了一个集成的工作流程:设计、CMS、托管、发布,最后是上线网站。GrapesJS 为开发者提供了一组编辑器模块——画布、组件、块、样式、资源、命令、存储、导出——周围没有其他内容。
使用 GrapesJS 时,由你的应用决定编辑器周围发生什么。
这并不是对 Framer 的批评,Framer 自己也不这么看待。它的开发者文档划出了同一条界线:
“Framer uses code as an escape hatch... If your project needs a lot of logic and components we advise to create a normal React application instead.”
“Most packages typically don’t work unless they were built specifically for Framer.”
“Framer does not offer HTML export for self-hosting... published sites are not fully static and cannot be exported as standalone HTML files for self-hosting.”
所以问题不是哪个产品更强大。而是你的项目处于这条边界的哪一侧。
三十七行,来源均为各自项目的官方文档。凡是能力真实存在、只是被套餐或附加组件限制的,单元格会如实说明,而不是记为缺失。
| 能力 | GrapesJS | Framer |
|---|---|---|
| 产品类型 | 你嵌入的开源可视化编辑器框架 | 托管网站设计与发布平台 |
| 可视化编辑器 | 内置——拖放画布,带有图层和响应式断点 | 内置——拖放画布,带有图层和响应式断点 |
| 网站建设器 | 需要你自己在编辑器周围实现 | 内置的——平台能处理 |
| 开源 | 是的——BSD-3-Clause核心 | 不——是专有的 |
| 源代码访问 | 完整源代码访问;分支并修改编辑器本身 | 无法访问源代码 |
| 自托管 | 是的——完全运行在你自己的基础设施上 | 不——Framer声明发布的网站不能作为独立的HTML导出用于自托管 |
| 托管服务 | 你自己的托管;没有任何东西是为你托管的 | 内置 — 全球 CDN,Basic 版 20 个节点,Pro 版 300+ 个 |
| 可嵌入编辑器 | 支持——可挂载到你的应用中的任何页面 | Framer 不发布嵌入或编辑器托管 API;插件运行于 Framer 内部,而非反之 |
| 自定义后端 | 由你的应用来做 | Server API(测试版)可以从你的服务器更新和发布项目 |
| 自定义数据库 | 由你的应用来做 | Framer 自有的内容存储 |
| 自定义存储 | 由你的应用来做 | 内置的——平台能处理 |
| 自定义组件 | 支持——用你自己的模型和 traits 定义组件 | 是的——带有属性控制的React代码组件 |
| 自定义区块 | 是的——任何组件都可以作为块暴露 | 支持——用你自己的模型和 traits 定义组件 |
| 设计系统 | 支持——将区块面板限制在你自己的设计系统内 | Framer 的开发者 FAQ 表示,它目前并未针对设计系统的工作场景做设计 |
| 自定义编辑器 UI | 完整源代码访问;分支并修改编辑器本身 | 可通过Plugins API扩展;编辑器UI本身是Framer的 |
| 白标 | 完整源代码访问;分支并修改编辑器本身 | 付费套餐上的网站徽章已移除;编辑器仍保留Framer品牌 |
| 用户权限 | 由你的应用来做 | 内置——工作区和项目角色 |
| 多租户 | 由你的应用来做 | 工作空间和项目,而不是为自己的客户隔离租户 |
| CMS | 你的CMS或无头CMS,通过Storage Manager连接 | 内置——合集、项目和页数限制因计划而异 |
| 发布 | 你的发布管道 | 内置的——平台能处理 |
| SEO | 你的渲染层拥有输出及其元标签 | 内置 — 元标签、Open Graph、规范标签、网站地图、重定向 |
| 分析 | 你的分析;目录里有一个Google Analytics插件 | 内置且无cookie;历史保留因计划而异 |
| A/B 测试 | 需要你自己实现 | 通过Convert附加组件获取,按事件计费 |
| 本地化 | 编辑器界面自带 i18n 模块;网站内容的本地化则由你的应用负责 | 内置为付费附加内容,按语言区域计价,并支持AI自动翻译 |
| 协作 | 需要你自己实现 | 内置——实时多人协作、评论,Pro 版还有分支与 Staging |
| AI功能 | 通过插件获得 | 内置 — AI 智能体与自动翻译,按套餐额度计量 |
| React 集成 | 是的——官方@grapesjs/react包装 | 是的——代码组件是React |
| Vue 集成 | 是的——引擎不依赖框架;自己安装 | 不支持——Framer的组件模型是React |
| Angular 集成 | 是的——引擎不依赖框架;自己安装 | 不支持——Framer的组件模型是React |
| Next.js 集成 | 是的——客户端挂载在应用或页面路由器中 | 不适用——Framer会渲染并服务自己的网站 |
| 原生 JS | 是的——引擎不依赖框架;自己安装 | 不适用——Framer会渲染并服务自己的网站 |
| 电子邮件构建器功能 | 通过MJML和通讯插件获取 | 这不是Framer的使用场景 |
| 插件生态系统 | GJS.Market 加上开源插件生态系统 | Framer 插件市场,第一方和第三方 |
| API 可扩展性 | 完整的编辑器 API——组件、区块、命令、面板、存储 | Plugins API 在编辑器中;Server API 在公开测试中,WebSocket、JS/TS SDK,没有出站 webhook |
| 供应商依赖 | 引擎是你的;随时可以 fork | 该网站运行在Framer的基础设施上 |
| 最适合 | 包含编辑器的产品 | 需要上线和维护的网站 |
| 定价模型 | 免费引擎加上你的工程和基础设施 | 按站点计费的套餐,加上按编辑席位计费,再加上按用量计费的附加服务 |
Framer 的各项能力读取自 Framer 自身的文档和定价页面,日期: 2026-09-03. Framer 提供 React 代码组件、Code Overrides、有文档的 Plugins API 和公开的插件市场——本表将上述各项均标记为支持。修改任何单元格前请先复核。资料来源: framer.com/pricing · Framer 开发者文档 · Framer:HTML 导出 · Framer Server API · Framer CMS · GrapesJS 文档 · npm 上的 grapesjs
编辑器周围有十二个环节,以及各由谁来构建。绿色那一列是引擎提供的;其余都是你的应用,装插件也改变不了这一点。
十二个里有五个。这个比例就是整页的真实总结:GrapesJS给你编辑器,你围绕它构建产品。
GrapesJS 是一个 npm 包。你的应用在哪里运行,它就在哪里运行——你的服务器、你的云账户、你的内网,或是物理隔离的环境。除非你主动把内容发出去,编辑会话的任何部分都不会离开你的基础设施。
托管网站平台
你的域名指向 Framer。其下的一切都由 Framer 运行——而这恰恰就是它提供的价值。
你的堆栈中的编辑器框架
除了引擎本身,每一层都由你自己构建、运行和承担费用。
自托管不是你开启的功能。它是编辑器作为你代码库中的一个库,而不是你登录的服务的结果。
要清楚它给了什么、没给什么。GrapesJS 提供的是编辑器这一层。周边的产品基础设施由你的应用提供——后端、内容模型、认证、权限、发布和托管,全都是你要做的工作。引擎并不提供其中任何一项,也没有哪个插件能把它变成一个平台。
这就是比较变得不够接近的情况。如果你需要一个存在于你产品内部、域名和品牌下的编辑器,托管网站平台就不是合适的工具类别——而GrapesJS正是能回答这个问题的类别。
传输
你的API
持久性
你的数据库
交付
你的发布
请求路径
GrapesJS 并不假设页面的成分。你定义组件模型,编辑器只提供你注册的内容——这也是编辑器不再让人觉得像是附加在产品上的通用网站工具的原因。
从设计系统到编辑器
一个 SaaS 产品对外只开放六个区块——Hero、定价、推荐、功能网格、CTA 和 FAQ——每个都绑定真实的 props,并按设计系统校验。用户用这些区块来组合页面。他们拿不到不受限制的 HTML 画布,客服也不会再收到有人把三栏布局嵌套四层之后弄坏的工单。
编辑器成为你产品的一部分,而不是一个独立的网站建设环境。
受限的区块面板是一项功能,而不是限制。这正是大多数 SaaS 构建器实际交付的那一套。
标题、副标题、一个主要行动。
计划列绑定到你的真实计划数据。
带有出处的引用,来自你自己的记录。
你的设计系统能保证固定的网格。
一个样式受限的转化区块。
问题和一份发到你API的表格。
Framer 提供了集成的网站发布工作流程:内容存在于 Framer 的 CMS,发布只需一个按钮。GrapesJS 两者都不提供,诚实的比较方式就是直白地说。
使用 GrapesJS 时,Storage Manager 就是一对回调——加载和存储。回调背后是什么,完全由你决定:
保存路径
GrapesJS 既不能取代 CMS,也不能取代托管。它让你控制编辑层;你的应用程序决定内容如何存储和发布。如果你想在已有的 CMS 之上获得编辑体验,那这是一条老路——但这是你自己构建的路径。
引擎与框架无关:它挂载到一个 DOM 元素上,并不关心是什么渲染了那个元素。React 有官方封装;其他框架直接挂载引擎,在生命周期钩子里也就几行代码。
Framer自有的组件模型是React。这是一个范围声明,而非缺陷——但如果你的产品是Vue或Angular,那就是决定性问题。
它可以取代视觉编辑层。但它本身无法取代一个完整的托管网站平台。
这句话的两半都很重要,而只印上前半部分的对比页面不值得一读。这正是关键所在。
目标是用开发者控制的解决方案取代视觉编辑层。
目标是一个完整的托管网站平台,已经组合完成。
7 种情况
编辑本身,以及它的外观和行为。
7 种情况
Framer平台为你运行,这些服务成为你的工程工作。
6 种情况
目录插件覆盖了多个部分,这样你就不会从空白画布开始。
GrapesJS 可以替代产品的编辑器部分,但它不会自动重建完整网站平台所提供的每一项服务。在你投入之前,请为差额做预算。
有一大类项目选择GrapesJS是错误的,假装不是这样会让本页其他内容变得不那么可信。
如果交付物是一个网站,Framer就在完成它设计的初衷,并且做得很好。
镜像:那些托管网站平台无论多么优秀都无法覆盖的项目。
如果交付物是一个包含编辑器的产品,编辑器必须是一个库。这就是整个论点。
这不是$0和$X的比较,这样说团队在工作六个月后就会感到意外。这些是不同的产品类别,成本形态也不同:一个是订阅,另一个是工程。
每个网站订阅,每个编辑席位收费,还有计费附加内容。
免费引擎,以及所有相关费用,都放在你自己的账面上。
GrapesJS可以免除平台授权成本。它并不意味着工程和基础设施是免费的——对于一个小型营销网站来说,订阅费几乎肯定比搭建成本便宜。
| 套餐 | 标示价格 |
|---|---|
| Free | $0 按网站/月 |
| Basic | $10 按网站/月 |
| Pro | $30 按网站/月 |
| Enterprise | 定制——联系销售 |
| 席位类型 | 标示价格 |
|---|---|
| Viewer | $0 按编辑/月度 |
| Content editor | $10 按编辑/月度 |
| Editor | $20 按编辑/月度 |
所引用的是 framer.com/pricing 上按年计费的价格。该页面的月付切换是客户端渲染的,其数值无法读取,因此这里不引用任何月度价格,也不去照搬第三方博客的数字。
Enterprise 是定制定价的,并增加了: SSO, SCIM, Roles, Uptime guarantee.
所有 Framer 数据均读取自 framer.com/pricing 于 2026-09-03. 套餐会变;在对这些数字做出决定前,请核实来源。请注意,Framer的免费套餐不允许自定义域名,且已不再有Scale套餐——通常归因于其限制的现为Pro附加项。
如果你已经确定编辑器应该属于你的产品,还有一个选择:编写编辑器,或者从已经包含难点的引擎开始。
| 子系统 | 从零开始 | GrapesJS |
|---|---|---|
| 画布 | 构建它 | 已包含 |
| 拖放 | 构建它 | 已包含 |
| 组件模型 | 构建它 | 已包含 |
| 区块 | 构建它 | 包含且可扩展 |
| 样式系统 | 构建它 | 包含且可扩展 |
| 层树 | 构建它 | 已包含 |
| Commands 与撤销 | 构建它 | 已包含 |
| 资产管理 | 构建它 | 可得 |
| 响应式断点 | 构建它 | 已包含 |
| 插件 | 也要建设生态系统 | 现有生态系统 |
| 定制化 | 全套 | 全套 |
| 工程工作 | 高 | 较低的起始点 |
这里刻意没有给出任何时间或成本节省的数字。编辑器要做多久完全取决于你在造什么,本页上任何百分比都会是我们编出来的。
GrapesJS 为你提供了现有的编辑器基础,让你的团队专注于体验中产品特定的部分。
引擎是地板,不是天花板。以下都是 GJS.Market 目录中的真实商品,按一个团队离开网站平台后真正必须自己替换的四件事来分组。
另外四个列表回答了上述比较中的具体行——页面管理、模板管理、可重复使用符号和Google Analytics: pages-manager · templates-manager · symbols · grapesjs-ga
插件并不能把引擎变成一个平台。它确实会从四个不同的地方省去一周的工作。
目录已核实 2026-09-03.
没有Framer导入器——无论是从Framer,还是在npm上,更不在这个目录里。Framer自己的文档说明,已发布的网站不能导出为独立的HTML进行自托管,所以迁移是工程工作,具体操作多少完全取决于你实际移动的是什么。
其中一项的迁移是一个冲刺周期,九项全做则是一个项目。没有哪个页面能告诉你你属于哪一种——包括本页,这也是本节从不给出任何工期的原因。
迁移路径
下面现实的流程假设你是在重建而不是转换。这通常是正确的判断:迁移的价值在于结果符合你的产品,而忠实地将Framer站点转换为GrapesJS既不能带来平台的便利,也无法获得框架的控制权。
确定内容模型
定义 GrapesJS 组件
重建设计系统
连接存储
构建发布
迁移内容
添加权限和工作流程
测试响应式输出
部署
GJS.Market 为那些宁愿先把产品做出来、而不是先把引擎学明白的团队构建 GrapesJS 集成。这里不卖任何导入工具——这是工程工作,也按工程工作来报价。
六件事:团队实际在嵌入式编辑器上发布的内容。每个内容都链接到涵盖其内容的指南。
六种情境,以及各自指向哪一边。其中三种指向 Framer——如果你的答案在其中,就选它。
你到底在构建什么?
一个需要尽快上线的营销网站
Framer
托管、CMS 和发布都已经装好了,你要做的只是把它们重造一遍。
设计师拥有网站所有权,并以视觉形式从头到端工作
Framer
以设计为先的平台是工作流程最快的平台,而且没有工程接缝。
团队里没人想管理基础设施
Framer
托管服务、域名和CDN才是你付费购买的产品。
编辑器必须存在于你已经发布的产品内部
GrapesJS
没有托管的网站平台会发布一个你可以挂载在自己应用中的编辑器。
内容和基础设施必须留在你的系统中
GrapesJS
Framer 明确表示已发布的站点无法导出用于自托管;而这个引擎是一个你自己运行的包。
你的客户必须看到你的品牌,而不是供应商的
GrapesJS
编辑器的整个 UI 都是你控制的源,连面板都不例外。
从GrapesJS开始,定制编辑体验,连接自己的基础设施,并通过GJS.Market的插件进行扩展。
为你的堆栈配置一个编辑器,看看集成具体包含什么。
从GrapesJS开始来自目录的预设、设计系统、组件、存储适配器和部署命令。
探索插件架构、嵌入、迁移和白标服务,由每天都在做这些的人负责。
获取自定义开发如果你想要一个托管的网站建设平台,Framer 非常棒。如果你想把可视化编辑集成到自己的产品中,并控制编辑器、后端、存储、组件、发布和基础设施,GrapesJS 是更好的基础。