嵌入式页面构建器

把页面构建器 直接嵌入 你的 SaaS

在你现有的产品内部为客户提供可视化编辑器 —— 使用你的品牌、你的后端、你的权限体系和你的发布流程。

开源BSD-3-Clause 许可自托管React 与 Next.js100+ 款插件
各部分如何组合

你的产品。你的编辑器。你的基础设施。

编辑器是你应用内部的一层,而不是一个把用户交出去的平台。围绕它的一切 —— 账号、权限、数据、发布 —— 都保持在原来的位置。

你的应用

客户已经在登录使用的产品

  • 控制台
  • 页面
  • 设置
  • 用户
  • 计费

嵌入式编辑器

挂载在你界面中的 GrapesJS

浏览插件
  • 画布
  • 区块
  • 样式
  • 素材
  • 页面
  • 你的 API

    编辑器调用的接口

    • 项目
    • 素材
    • 用户
    • 权限
  • 你的数据库

    内容真正存放的地方

    • PostgreSQL
    • MySQL
    • MongoDB
    • 任何你已在使用的数据库
  • 你的发布基础设施

    成品页面如何触达用户

    • 网站
    • CDN
    • CMS
    • 应用程序
编辑器运行在你的应用内部 —— 而不是另一个独立平台上。
为什么要嵌入

为什么要嵌入页面构建器?

把客户导向外部构建器,等于同时失去这次会话、品牌曝光和数据。嵌入则三者都能保留。

保留你的用户体验

客户始终不会离开你的产品。编辑只是他们早已熟悉的应用中多出的一个界面,而不是跳转到别处。

保留你的品牌

面板、图标、字体和术语都可以由你修改,编辑器因此看起来就是你应用的原生组成部分。

保留你的数据

项目、素材和内容都存放在你自己的基础设施中,遵循你的留存、数据驻留和备份规则。

保留你的后端

编辑器调用你已有的接口。无需并行的数据模型,也不必在两个数据源之间同步。

保留你的发布流程

草稿、审核和发布仍在你的流水线中。编辑器只负责产出内容,何时上线由你的基础设施决定。

保留完全的掌控权

开源内核、自托管、没有按席位收费、也不强制使用某个编辑器。你的路线图不必依赖任何第三方。

嵌入的内容

用户需要的一切 —— 都在你的应用里

其中一部分属于 GrapesJS 内核,编辑器挂载后即刻可用;一部分需要插件;还有一部分始终是你应用自己的职责 —— 每张卡片都会注明。

内核

可视化画布

直接在你的应用内拖放、选择和编辑内容。属于编辑器内核 —— 挂载后立即可用。

内核 + 插件

区块

可复用的版块与组件。可以用你产品自己的标记定义,也可以直接安装现成的区块集。

浏览区块插件

内核

样式控制

通过样式管理器控制字体、间距、颜色和响应式断点,并可限制为设计系统允许的属性。

内核 + 插件

素材管理器

让编辑器指向你自己的媒体库,或用素材插件接入托管服务。

浏览素材插件

内核 + 插件

存储

通过远程存储管理器把项目保存到你的 API 和数据库。插件可再加上自动保存、崩溃恢复和托管后端。

浏览存储插件

内核 + 插件

多页面

每个项目可包含多个页面。内核提供页面模型,插件提供用户看到的管理界面。

浏览多页面插件

你的应用

发布

导出 HTML 和 CSS,再交给你自己的草稿与发布流水线。编辑器绝不会代你发布。

你的应用

权限

哪些用户和角色能编辑什么,由你的应用决定,而非编辑器。先对路由做鉴权,再按角色收窄编辑器面板。

工作原理

五步嵌入你的编辑器

  1. 1
    01

    安装

    把编辑器加入你现有的前端。一个依赖,无需注册服务,也不用申请密钥。

  2. 2
    02

    挂载

    在你自己应用外壳内的容器上初始化 GrapesJS。它在你放置的位置渲染,并继承周围的页面环境。

  3. 3
    03

    接入你的存储

    把远程存储管理器指向你自己的接口,这样每次保存都会落到你的数据库,并由你的会话完成鉴权。

  4. 4
    04

    添加插件

    只安装产品真正需要的部分 —— 区块、页面、素材、导出、AI —— 并把你自己的组件注册为区块。

  5. 5
    05

    发布

    从编辑器读取生成的 HTML 和 CSS,再推入你已经在运行的草稿、审核与发布流水线。

先从编辑器内核开始,只添加你产品需要的功能。

快速上手

构建你的第一个嵌入式编辑器

五段真实代码。刻意与框架无关 —— React 和 Next.js 的细节只有一个链接之遥。

安装

npm install grapesjs

初始化

editor.jsJS
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';

// Mount the editor on any container inside your own app shell.
const editor = grapesjs.init({
  container: '#editor',
  height: '100%',
  fromElement: false,
});

存储

storage.jsJS
const editor = grapesjs.init({
  container: '#editor',

  // Persist to your API, not to a third-party service.
  storageManager: {
    type: 'remote',
    autosave: true,
    stepsBeforeSave: 10,
    options: {
      remote: {
        urlStore: '/api/projects/123',
        urlLoad: '/api/projects/123',
        // Your session, your authorization rules.
        fetchOptions: { credentials: 'include' },
      },
    },
  },
});

插件与自定义区块

plugins.jsJS
import grapesjs from 'grapesjs';
import blocksBasic from 'grapesjs-blocks-basic';

const editor = grapesjs.init({
  container: '#editor',
  plugins: [blocksBasic],
  pluginsOpts: {
    [blocksBasic]: { flexGrid: true },
  },
});

// Or register your own product's components as blocks.
editor.Blocks.add('pricing-table', {
  label: 'Pricing table',
  category: 'Your product',
  content: '<section class="pricing">…</section>',
});

发布

publish.jsJS
// Publishing stays in your infrastructure.
async function publish(projectId) {
  const html = editor.getHtml();
  const css = editor.getCss();

  await fetch(`/api/projects/${projectId}/publish`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ html, css, status: 'published' }),
  });
}
归属权

你的编辑器。你的后端。你的数据。

从上到下读一遍这套技术栈,看看其中有多少本来就属于你。GJS.Market 只提供其中一层。

前端

你已经在用的框架

  • React
  • Next.js
  • Vue
  • Angular
  • 原生 JavaScript

嵌入式编辑器

GrapesJS 加上你选择的插件

浏览插件
  • 编辑器内核
  • 区块
  • 存储
  • 素材
  • 导出
  • API

    你的 REST 或 GraphQL API

    • 你的鉴权
    • 你的校验
    • 你的限流
  • 数据库

    你的数据库,你的表结构

    • 你的备份
    • 你的数据驻留
    • 你的留存策略
  • 发布

    你的基础设施

    • 你的域名
    • 你的 CDN
    • 你的发布流程
GJS.Market 提供编辑器能力,围绕它的一切仍由你掌控。
插件生态

用生产级插件扩展你的嵌入式编辑器

下面每一款插件都是 GJS.Market 上真实在售的产品,价格实时同步。按需安装,其余可以跳过。

推荐组合

按产品需要搭配你的插件组合

四种起步方案,全部由目前真实在售的插件组成。价格实时取自目录。

价格在构建时取自市场,可能会变动。所有插件都是可选的 —— 编辑器内核本身免费。

应用场景

GrapesJS 可以嵌入到哪里?

同一套编辑器内核,通过你为它配置的插件与限制,胜任完全不同的任务。

框架支持

嵌入到你已经在用的技术栈

GrapesJS 在浏览器中运行并挂载到一个 DOM 节点上,所以无论你用什么,集成都只是一层很薄的封装。

自研还是嵌入

自己从零做,究竟意味着什么

可视化编辑器不是一个功能,而是十几个必须协同工作的子系统,而且要随着浏览器演进持续可用。

自研编辑器意味着要做的子系统

  • 编辑器架构
  • 画布与 iframe 隔离
  • 拖放
  • 区块系统
  • 样式管理器
  • 图层树
  • 撤销 / 重做历史
  • 存储与自动保存
  • 素材管理器
  • 多页面模型
  • 响应式编辑
  • HTML / CSS 导出
  • 跨浏览器测试
  • 长期维护

从零自研

数月的工程投入

  • 上面每一个子系统都要你自己设计、实现和测试
  • 编辑器会变成团队需要长期维护的又一个产品
  • 浏览器和框架升级都成了你的问题
  • 路线图的产能耗在编辑器底层,而不是你的产品上

GrapesJS + GJS.Market

几天即可起步

  • 开源编辑器内核,问题已被解决且经过大量实战检验
  • 存储、区块、页面、素材和导出都有现成插件
  • 把你自己的组件注册为区块
  • 你的 API、你的数据和你的发布流程都保持不变

终点相同。一条路把路线图花在编辑器基础设施上,另一条把它花在你的产品上。

为什么选 GrapesJS

为什么用 GrapesJS 作为你的嵌入式编辑器?

它从设计之初就是为嵌入而生 —— 所以你需要的扩展点本来就已经在那里。

开源

内核以 BSD-3-Clause 许可发布 —— 宽松、对商业友好,而且在你需要弄清它到底做了什么时可以直接读源码。

自托管

编辑器运行在你自己的应用基础设施中。没有需要调用的外部服务,也没有不属于你的可用性指标。

可扩展

自定义组件、区块、命令、面板和插件都是一等公民。你产品的界面本身也可以变成可编辑的内容。

对框架友好

支持 React、Next.js、Vue、Angular 和原生 JavaScript。官方 @grapesjs/react 封装采用 MIT 许可。

无供应商锁定

你的应用、数据和基础设施始终由你掌控。产物是纯粹的 HTML 和 CSS,可以在任何地方渲染。

插件生态

用 GJS.Market 上的 100+ 款插件扩展编辑器,而不必自己实现每一项能力。

26k+

GitHub 星标

100+

GJS.Market 上的插件

10 years

持续开发

$0

授权费用,始终如此

让它成为你的

让编辑器看起来就是你的产品

  • 品牌
  • 自定义界面
  • 自定义组件
  • 自定义区块
  • 权限
  • 用户角色
  • 模板
  • 素材库
  • 发布流程
  • 自定义 API

你的用户应该觉得自己在使用你的产品 —— 而不是某个第三方编辑器。

了解白标页面构建器
常见问题

嵌入 GrapesJS —— 常见问题

开始使用

把可视化编辑器嵌入你的产品

从开源的 GrapesJS 编辑器起步,再用产品真正需要的插件扩展它。

最受欢迎

浏览 GJS.Market 插件

存储、区块、页面、素材、导出和 AI —— 均为生产可用的在售插件,价格实时同步。

浏览插件
免费

从 GrapesJS 开始

安装开源内核,挂载到你的应用中,在付费之前先把画布跑起来看看。

从 GrapesJS 开始
交给我们

需要集成方面的帮助?

编辑器嵌入、API 集成、白标主题和自定义区块,以明确范围的项目形式交付。

需要集成方面的帮助?