落地页构建器

落地页构建器 GrapesJS

构建一个可视化的拖放落地页面构建器,包含可重复使用的部分、响应式编辑、自定义组件、表单、SEO控制以及你自己的发布工作流程。

可视化拖放编辑器自定义模块与组件HTML 与 CSS 输出自托管可通过插件扩展
your-app.com/pages/spring-launch
GrapesJS
桌面平板手机

区块

  • Hero
  • 功能
  • Logo
  • 定价
  • FAQ
  • CTA
  • 表单

图层

  • Hero
  • 功能
  • 客户评价
  • 定价
  • FAQ
  • CTA

样式

  • 间距
  • 排版
  • 背景
一个由可重用部分组成的落地页,在你拥有的编辑器中。面板是 GrapesJS 给你的;部分库是你定义的部分。
试试看吧

可视化地构建落地页

从空白画布或模板开始,将部分拖入原位,自定义样式和内容,并通过您自己的应用程序发布。将一个块拖入下方画布——或先点击一个块,再点击画布——即可查看用户将要做的手势。

区块

拖动一个部分——或者点击一个部分,然后点击画布。

启动春季战役

点击此文字并输入。

它转化的三个原因

简短、可扫描、以利益为先。

简单定价

三级,推荐一级。

真正的

…这是GrapesJS本身

三个公开的GrapesJS构建,只有你要求一个时才加载——只有点击前都不会被抓取。

在新标签页中打开

GrapesJS 的原版演示:块色板、画布、样式管理器和图层树。这里看到的所有内容都包含开源核心。

grapesjs.com/demo.html免费

在iframe中加载第三方演示。点击之前不会请求任何内容。

核心理念

构建编辑器。不要构建编辑器引擎。

落地页构建器看起来像一个功能,但行为却像十几个功能。在营销人员能够将hero部分拖入原位之前,必须有人先构建画布、组件模型、拖拽系统、样式管理器、响应式编辑、撤销、资产处理和序列化格式——并且保持所有功能正常运行。

选项A

从零开始构建

先设计编辑器架构,再发布产品。

你实现并维护

  • 画布与文档模型
  • 拖放,包括触摸
  • 组件树与 traits
  • 区块库与分类
  • 图层管理器
  • 样式管理器和 CSS 规则
  • 响应式设备切换
  • 撤销/重做历史
  • 资产管理
  • 序列化与存储
  • 命令与插件架构

这些都是有自己边缘情况的子系统,没有一个是你客户付费的。

选项B

从GrapesJS开始

按照原有的编辑引擎进行定制。

已经进入开源核心

  • 画布与组件模型
  • 拖拽
  • 区块 API
  • 图层管理器
  • 样式管理器
  • 设备管理器
  • 撤销/重做
  • 资产管理
  • 项目序列化
  • 指挥
  • 插件架构

你自己配置面板,注册自己的部分,然后把工程预算花在产品上。

请看快速入门
选项C

用插件扩展

添加针对营销的具体内容,但不写出来。

安装而非构建

  • 落地页部分库
  • 模板和页面管理器
  • 形式组件
  • SEO与无障碍审计
  • 分析标签
  • 资产管道与存储适配器
  • 发布与导出目标

安装、配置、定制、发货——并保留团队代码,保留别人无法为你制作的部分。

浏览插件

GrapesJS 为你提供了视觉编辑的基础,让你的团队能够专注于围绕它的产品。

范围

落地页构建器的真正含义

十九个子系统,按最终拥有者标签。重点不是列表很长——而是只有最后四个是专门针对你的业务。

  • 画布GrapesJS 核心
  • 拖拽GrapesJS 核心
  • 组成部分GrapesJS 核心
  • 区块GrapesJS 核心
  • 层次GrapesJS 核心
  • 样式管理器GrapesJS 核心
  • 响应式剪辑GrapesJS 核心
  • 撤销/重做GrapesJS 核心
  • 资产GrapesJS 核心
  • 序列化GrapesJS 核心
  • 指挥GrapesJS 核心
  • 插件架构GrapesJS 核心
  • 分部图书馆插件
  • 模板插件
  • 形式组件插件
  • SEO控制你的应用程序
  • 发布你的应用程序
  • 分析你的应用程序
  • 实验你的应用程序
由谁来构建你的应用程序GrapesJS 核心插件

GrapesJS 负责编辑引擎。插件覆盖落地页专属表面。最后一栏的一切都是你的产品与其他平台不同的地方。

定义

什么是落地页生成器?

落地页构建器是一种可视化编辑器,允许用户创建活动页面,而无需手写每个HTML元素和CSS规则。

它不仅仅是一个功能。落地页构建器是一个编辑器、块、模板、表单、SEO、分析、实验和发布——而每个都是关于谁拥有什么的决定。

实际上,现代落地页构建器应具备以下所有功能:

球队对一个的期待

  • 拖放编辑
  • 可重复使用的部分
  • 模板
  • 响应式剪辑
  • 自定义组件
  • 形式
  • SEO控制
  • 资产管理
  • 发布
  • 分析
  • 实验

是视觉编辑,不是代码编辑

用户直接操作渲染后的页面。拖放落地页面构建器将布局变成一个手势,而非合并请求。

是截面,不是元素

营销人员是按 Hero、定价表和 FAQ 来思考的。围绕区块构建的落地页编辑器,正好匹配营销活动的实际规划方式。

HTML和CSS你要保留

输出是你控制的标记,可以渲染到任何地方——而不是锁定在托管运行时的专有格式。

GrapesJS 提供可视化编辑层。你的应用程序控制后端、数据、认证和发布工作流程。

建筑

落地页构建器的工作原理

这张图中有一行很重要,它位于编辑器和API之间。上面的部分是创作时的关注点。下面是你的产品。

你的应用程序

  • 认证
  • 用户
  • 项目
  • 权限
  • 数据库
  • 账单
  • 分析
  • 发布

项目数据

GrapesJS

  • Canvas
  • Components
  • Blocks
  • Layers
  • Styles
  • Assets
  • Commands

从创作到活跃页面

  1. 用户
  2. 可视化编辑器
  3. GrapesJS
  4. 项目数据
  5. 你的 API
  6. 数据库
  7. 发布
  8. 上线的落地页
编辑器从不直接与你的数据库对话。它会把项目数据交给你;你的API决定这意味着什么,谁可以保存,以及发布时会发生什么。
  • 编辑器是一个客户端的创作工具。把每个存档都当作不信任的输入,直接到达你的 API。
  • 项目数据是你重新打开编辑器时的真实来源;HTML 和 CSS 是它的渲染。
  • 预览和发布是同一数据上的两条路径,而不是两种存储格式。

GrapesJS 拥有编辑界面。你的应用拥有身份、数据和交付。保持这条线路干净,是构建者可替换、可测试且属于你的原因。

能力

视觉落地页编辑所需的一切

这些是 GrapesJS 开箱即用的编辑功能,也是其插件 API 设计时所设计的扩展功能。

拖拽

可视化构建布局。组件被投放、重新排序并嵌套在画布上。

可重复使用的块

只需注册一次自己的部分和组件;每个用户拖动同一个库。

响应式剪辑

在编辑器中切换设备,并根据断点写规则。默认设备集有桌面、平板、移动横向和移动竖屏。

自定义组件

定义组件类型,并赋予它们自己的traits和行为,这样编辑器就能与你的产品设计系统匹配。

资产管理

通过资产管理器管理图片和其他媒体,并以你已经使用的存储为后盾。

样式管理器

通过分区控制,你可以配置控制字体、间距、颜色和布局。

模板

通过目录中的模板插件,从可重复使用的布局开始活动,而不是空白画布。

HTML 与 CSS

getHtml() 和 getCss() 会返回画布渲染的标记,所以发布的输出可以留给你进行优化。

工作流程

从空白画布到公开的竞选活动

  1. 1
    第一步

    选择模板

    打开保存的布局,而不是空白页面。最快的战役是开始时完成70%的。

  2. 2
    第二步

    添加分段

    将hero、功能、定价、推荐和FAQ块拖入活动所需的顺序。

  3. 3
    第三步

    自定义内容

    在画布上编辑复制品,通过资产管理器交换图片,设置链接。

  4. 4
    步骤4

    调整响应式样式

    切换设备,并在别人看到之前,按断点修正布局。

  5. 5
    第五步

    添加表单

    输入捕获表单,指向你自己的端点。

  6. 6
    第六步

    预览

    通过预览路径从项目数据渲染页面——即服务于实时页面的同一渲染器。

  7. 7
    第七步

    发布

    编写HTML、CSS和SEO记录,分配slug,并从你自己的基础设施中提供。

创建一次。在不同活动中重复使用。

区块库

创建可重复使用的落地页块库

GrapesJS 核心零块。这不是遗漏——而是扩展点。你注册的块库正是将通用可视化编辑器变成专门设计的落地页构建器的关键,也是你能编写的最高杠杆代码。

  • Hero

    标题、副标题和主要行动号召。

  • 功能

    两到四个带图标的福利栏。

  • Logo 墙

    客户或整合标志作为社会认同。

  • 客户评价

    转换点附近的引言、姓名和头像。

  • 定价

    分层计划,推荐一栏。

  • 比较

    用特征表对比访客正在权衡的选项。

  • FAQ

    用访客自己的话说,是处理异议。

  • 联系表格

    线索捕获界面,提交到你自己的 API。

  • 通讯

    单一栏订阅,供尚未准备好的访客使用。

  • 行动号召

    页面底部反复出现的问题。

  • 页脚

    导航、法律和信任信号。

快速入门

前二十行

安装核心,安装,并注册使其成为落地页构建器的部分。本页的其他内容都是叠加在这些线条上的决策。

安装

npm install grapesjs
page-builder.tsTS
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';

const editor = grapesjs.init({
  container: '#editor',
  height: '100vh',
  // The core ships no blocks at all — the section library below is what
  // turns a generic visual editor into a *landing page* builder.
  blockManager: { appendTo: '#blocks' },
  storageManager: false,
});

const SECTIONS = [
  { id: 'hero',     label: 'Hero',         html: '<section class="hero">…</section>' },
  { id: 'features', label: 'Features',     html: '<section class="features">…</section>' },
  { id: 'logos',    label: 'Logo cloud',   html: '<section class="logos">…</section>' },
  { id: 'pricing',  label: 'Pricing',      html: '<section class="pricing">…</section>' },
  { id: 'faq',      label: 'FAQ',          html: '<section class="faq">…</section>' },
  { id: 'cta',      label: 'Call to action', html: '<section class="cta">…</section>' },
];

SECTIONS.forEach(({ id, label, html }) => {
  editor.Blocks.add(id, { label, category: 'Landing page', content: html });
});

每个模块是一个标签、一个类别和一个标记块。给标记一个组件类型,它也会得到 traits、约束和自己的工具栏。

模板

从落地页模板开始

模板是用户打开的已保存项目,而不是空白画布。下面的分类是市场团队要求的布局类型——下面的插件是让用户能够保存、管理和重新打开这些模板的。

团队要求的布局类型

  • SaaS
  • 创业
  • 产品
  • 代理机构
  • 事件
  • 应用
  • 通讯
  • 网络研讨会

这些是布局类型,不是目录列表:GJS.Market 没有模板产品类型。下面的模板和页面管理器是真正的插件,给你的构建者提供一个存放它们的地方。

线索捕获

将落地页转变为潜在客户生成页面

没有捕获入口的落地页只是一份宣传册。表单组件是编辑器的职责;提交按钮之后的一切都归你。

提交路径

  1. 落地页
  2. 表单
  3. 提交
  4. 你的 API
  5. CRM / 数据库
保持后台和CRM在你掌控之下。发布页面直接发布给第三方,会把你的漏斗数据和潜在客户一起交给他们。

把每一次提交都路由到你自己的接口。校验、限流、反垃圾、用户同意和 CRM 分发都应该发生在那里——而这些都不该由页面编辑器来决定。

api/leads.tsTS
// The form component is editor-side. The submission is yours.
// Never let the published page post straight to a third party you do not
// control — route it through your own endpoint so you keep the lead.

app.post('/api/leads', async (req, res) => {
  const parsed = leadSchema.safeParse(req.body);     // validate server-side
  if (!parsed.success) return res.status(422).json({ error: 'invalid' });

  await rateLimit(req.ip);                            // forms get abused
  const lead = await db.leads.create({
    data: { ...parsed.data, pageSlug: req.body.pageSlug, utm: pickUtm(req.body) },
  });

  await crm.upsertContact(lead);                      // your CRM, your rules
  res.json({ ok: true });
});

联系表格

姓名、工作邮箱、消息。B2B活动页面上的默认销售路径。

通讯形式

单一田地,低摩擦,适合感兴趣但尚未准备好的访客。

报名表单

直接进入产品,活动参数得以延续。

线索资格表单

公司规模、职务、预算——销售在第一次通话前需要的字段。

搜索

给每个落地页都设置自己的SEO控制

营销人员无法在没有开发者的情况下命名、描述或规范化的活动页面,是未完成的。GrapesJS 编辑文档正文;标题属于你的应用程序——因此 SEO 记录必须从一开始就成为页面模型的一部分。

页面SEO

标题
<title>
Spring Launch — Acme
元描述
meta[name=description]
Ship campaign pages without a developer…
规范网址
link[rel=canonical]
https://acme.com/spring
Open Graph
meta[property^=og:]
og:title, og:description, og:type
社会形象
og:image
/og/spring-launch.png
Robots
meta[name=robots]
index, follow
结构化数据
application/ld+json
{ "@type": "WebPage" }

它存储在项目数据旁边,在同一界面编辑,发布时由渲染器输出。

把SEO元数据当作页面记录中的一流字段,而不是上线后附加的。营销人员应该能够在不打开拉取请求的情况下更改标题。

page-seo.tsTS
// SEO belongs to your application, not to the canvas.
// Keep the marketing metadata beside the project data, so a marketer can
// edit it in the same screen and your renderer can emit it on publish.

type LandingPage = {
  slug: string;
  project: unknown;        // editor.getProjectData()
  seo: {
    title: string;
    description: string;
    canonical?: string;
    ogImage?: string;
    robots?: 'index,follow' | 'noindex,nofollow';
    jsonLd?: Record<string, unknown>;
  };
};

// On publish, your renderer — not GrapesJS — writes the <head>.
function renderHead(page: LandingPage) {
  return [
    `<title>${escapeHtml(page.seo.title)}</title>`,
    `<meta name="description" content="${escapeHtml(page.seo.description)}">`,
    page.seo.canonical && `<link rel="canonical" href="${page.seo.canonical}">`,
    page.seo.robots && `<meta name="robots" content="${page.seo.robots}">`,
  ].filter(Boolean).join('\n');
}
实验

建设→发布→衡量→改进

当团队可以迭代活动而不是把页面当作静态资产时,落地页构建器的价值就大大提升了。一旦页面变成数据而非文件,变体就很便宜:它就是指向同一根的另一行项目。

  1. 编辑器

    构建

    在编辑器里复制页面,改一件事——标题、报价、表格长度。

  2. 你的应用

    发布

    两种变体都发布到同一个蛞蝓,权重由你的应用决定。

  3. 你的应用

    度量

    只分配一次访客,持续执行该任务,并与转化事件一起报告。

  4. 你的应用

    改进

    将获胜者提升为默认状态,并从中开始下一次测试。

  1. 流量
    • 变体A
    • 变体B
  2. 转化
  3. 胜出版本

赋值、权重和显著性是应用逻辑。GrapesJS 不再涉及两个变体的创建点——这正是它能避免进入服务路径的原因。

GJS.Market 目录中没有 A/B 测试插件,GrapesJS 也没有实验功能。这是应用中需要实现的模式,不是安装的产品——而页面构建器正是它成本低廉的关键。

render-page.tsTS
// A/B testing is an application concern, not an editor feature.
// A landing page builder makes it cheap because a variant is just
// another project row pointing at the same slug.

const variants = await db.pageVariants.findMany({
  where: { slug, status: 'running' },
});

// Assign once, persist the choice, and report it to your analytics.
const variant = pickWeighted(variants, hash(visitorId));
res.setHeader('Set-Cookie', `exp_${slug}=${variant.id}; Path=/; Max-Age=2592000`);
res.setHeader('Vary', 'Cookie');   // or the page will be cached for everyone

return renderPublishedPage(variant);
测量

将您的落地页与分析堆栈连接起来

你不需要在页面构建器内构建分析平台。你需要发布的页面来发布你现有栈已经理解的事件。

分析活动

专注于重要的互动——表单提交、CTA点击、长页的滚动深度。

转换跟踪

将投稿与页面、变体以及产生该页面的活动联系起来。

页面浏览量

基线每隔一个数字的比值为 。

活动参数

从首次点击到CRM记录时,保留UTM值。

外部集成

直接发货,使用团队已有的集装箱或标签,而不是发明报表层。

使用您自己的分析基础设施。建设者的职责是确保每个发布页面都带有正确的标签和参数,而营销人员无需记住它们。

输出

你的落地页。你的堆栈。

编辑器生成两个功能:项目数据,你重新打开,以及你提供 HTML 加 CSS。两者都是你的,格式可读。

  1. GrapesJS开源
  2. 项目数据输出
  3. HTML + CSS输出
  4. 你的后台你的
  5. 你的主机 / CDN你的
开源

GrapesJS

编辑引擎。自托管,BSD-3-Clause授权,路径中没有托管服务。

输出

项目数据

你的页面存储的JSON。可读、可变,并且是你自己的,可以迁移。

输出

HTML + CSS

getHtml() 和 getCss() 返回的正是画布渲染的精确标记。

你的

你的后台

认证、版本控制、权限和发布端点。那就是真正属于你产品的部分。

你的

你的主机 / CDN

发布页面的服务来源,取决于你自己的性能和缓存标准。

保持对项目数据、HTML/CSS 和发布基础设施的控制。自托管并不保证迁移是免费的——你仍然拥有自己编写的集成——但这意味着你构建的任何东西都不会被别人导出。

自建与采用

从零开始构建一个落地页面构建器,还是用GrapesJS?

同样的十四项能力,读了两次。左边每一行都是一个项目。右边大多数是配置——另外三个不是配置的,也被认真标注。

能力从零开始GrapesJS
画布自行开发已内置
拖拽自行开发已内置
组成部分自行开发已内置
区块自行开发可扩展
造型自行开发已内置
响应式剪辑自行开发已内置
资产自行开发可扩展
存储自行开发可扩展
模板自行开发可扩展
插件架构自行开发已内置
形式自行开发可扩展
SEO控制自行开发与你的栈集成
A/B 测试自行开发与你的栈集成
发布自行开发与你的栈集成

已通过GrapesJS文档和2026-09-03上的GJS.Market目录进行验证。“可扩展”表示存在API及其现有插件;“集成”表示编辑器故意不这样做,而你的应用程序应该这样做。

编辑器引擎使用GrapesJS。所有与你业务相关的内容都用你自己的应用。

插件

构建你的落地页构建堆栈

GJS.Market 目录中的真实列表,按落地页构建器所组成的四个能力区域进行分组。价格和可用性在构建时从目录中读取。

策划

选择你的构建真正需要的插件

三份购物清单,按你正在制作的内容而非目录类别来框架。

价格是在组装时从目录中读取的,可能已经更改——产品页面具有权威性。

两条路径

从核心开始。添加你需要的部分。

GrapesJS 提供可视化编辑的基础。GJS.Market 插件允许你添加专门功能,而无需自己构建所有功能。

路径A

所有东西都自己动手

每一项能力都成为一张工单、一份审查和维护承诺。

  1. 更多工程
  2. 更多的维护
  3. 更多内部代码可拥有
  4. 通往首页的更长路径
路径B

用插件扩展

四个步骤,每个能力重复,基于你未编写的引擎。

  1. 安装
  2. 配置
  3. 自定义
  4. 船只
使用场景

构建一个 SaaS 落地页面构建器

把页面构建器放进产品里,大多数情况下并不是编辑器的问题。编辑器只是一条路径;其余部分是围绕它的多租户机制。

编辑器的位置

  1. 你的应用
  2. 认证
  3. 组织
  4. 项目
  5. GrapesJS 编辑器
  6. 项目存储
  7. 发布

用户与团队

谁能打开编辑器,打开时看到谁的页面。

项目

页面所属的单元。通常是你开账单的那个单元。

权限

编辑、发布和删除是三种不同的权利。发布权才是值得守护的权利。

账单

页面数、席位数或发布量——编辑器完全不需要知道其中任何一项。

白标

你的Chrome、你的字体、你的图标。编辑器UI是配置,不是固定界面。

发布

你的基础设施提供支持的 slug、自定义域名、版本和回滚。

编辑器是你产品中的一个界面。租户、权限和计费是让它成为一个可以销售的功能的关键。

使用场景

为代理机构打造白标落地页构建器

代理机构的问题不是构建一页的构建器。也不是为第十一位客户重建同样的东西。

代理品牌

或者是客户的。编辑器、Chrome、图标和排版都是你根据租户设置的。

可重复使用的块

一个部分库,维护过一次,部署到每个账户。

客户项目

将独立项目集中在一个安装下,使用每个客户端的资源和模板。

模板

用上一个客户有效的布局启动新客户。

权限

让客户编辑文案,但不允许他们重构页面或未经审核发布。

发布

部署到客户的域名和托管平台,而机构不会成为托管公司。

创建一个编辑系统,并在多个客户项目中重复使用。这些模块和模板成为代理机构的资产;客户只看到自己的品牌。

授权

为什么要使用开源的落地页构建器?

GrapesJS 核心以 BSD-3-Clause 许可证发布,官方 React 封装以 MIT 发布。两者均允许商业使用。实际影响:

自托管

编辑器运行在你的应用程序内部。你和用户之间没有托管的编辑器服务。

定制化

面板、命令和组件类型都可以替换,而不仅仅是主题化。

数据控制

项目数据存储在你的数据库中,格式可阅读并迁移。

定制UI

构建用户需要的编辑器界面,而不是供应商发布的那个。

自定义集成

你的CRM、资产存储、部署目标——都通过API插件有线连接。

可扩展性

有文档化的插件架构和现有的目录可供参考。

无专有编辑器依赖

你构建的任何东西都依赖于托管编辑器是否继续按照当前条件存在。

性能

性能考虑

页面构建器有两种截然不同的性能预算,混淆它们是该架构中最常见的错误。

  • 懒惰加载编辑器

    动态导入,这样它就不会落在共享捆绑包里。

  • 只在需要的地方初始化

    一个编辑器实例在创作路径上安装在客户端。

  • 避免不必要的重渲染

    编辑器拥有自己的DOM。每次按键重新渲染包装器都会与它抗衡。

  • 优化大型资产库

    用分页和懒人加载资产管理器,而不是列出所有上传。

  • 懒惰负载重插件

    当需要插件的面板打开时加载插件,而不是在编辑器初始化时加载。

  • 独立编辑器和公共运行时

    两个入口点,两个预算。发布页面根本不应该导入编辑器。

  • 独立优化已发布页面

    输出端有图片、字体和关键的CSS,像其他制作页面一样调校。

editor-route.tsxTSX
// The editor is an authoring environment. Keep it out of the bundle
// that a visitor downloads to read a published landing page.

// /admin/editor — loaded only for authenticated authors.
const PageBuilder = dynamic(() => import('@/components/page-builder'), {
  ssr: false,                       // GrapesJS measures the DOM on init
  loading: () => <EditorSkeleton />,
});

// Heavy, optional plugins load when the panel that needs them opens.
async function openAssetManager(editor) {
  const { default: cloudinary } = await import('grapesjs-cloudinary');
  cloudinary(editor, { cloudName: process.env.NEXT_PUBLIC_CLOUDINARY });
  editor.runCommand('open-assets');
}

编辑器是一个创作环境。已发布的落地页不一定需要完整的编辑器运行时间——而一个向每位访客发放编辑器捆绑包的活动页面,已经丢弃了构建编辑器的意义。

安全性

安全考量

可视化构建器会接受浏览器的结构化输入,并将其转化为你提供的标记。以下每一项都源自这一句话。

  • 验证APIs

    加载、保存和发布端点都是特权的。就这样对待它们吧。

  • 验证每个动作的权限

    被允许编辑页面并不等同于被允许发布页面。

  • 验证上传的资源

    检查服务器端的类型、大小和内容,并从你愿意隔离的来源提供用户上传。

  • 对用户生成内容进行净化

    如果页面作者不完全信任,出文时和进页都要进行消毒。

  • 验证项目数据

    Project JSON 到达你的 API 是不可信的输入。解析它,而不是简单地存储它。

  • 保护发布端点

    发布改变公众所看到的内容。限制速率,记录数据,并使其可恢复。

  • 永远不要信任客户端状态

    编辑器发送的任何内容都可能被伪造。重新确定服务器的所有权和限制。

这只是一份起始清单,不是保证。自己部署威胁模型——尤其是当编辑页面的人不是域名所有者时。

范围

从小处做起。逐步扩展成一个完整的落地页平台。

三个阶段,每个阶段都可以发布。错误在于试图在没人发布第一阶段页面之前就进入第三阶段。

  1. 1第一赛段

    MVP

    一个人可以搭建并发布一个页面。

    • 可视化编辑器
    • 基本模块
    • 模板
    • 简单存储
    • 发布
    请看快速入门
  2. 2第二赛段

    制作

    团队可以依靠它,而你不在场。

    • 认证
    • 项目
    • 资产管理
    • 自定义组件
    • 权限
    • 版本管理
    • 搜索引擎优化
    • 形式
    浏览插件
  3. 3第三赛段

    营销平台

    建筑商变成了可以出售的东西。

    • A/B 测试
    • 分析
    • 模板库
    • 竞选管理
    • 参赛队伍
    • 白标
    • 账单
    SaaS 页面构建器

第一个阶段之后的每个阶段都是产品决策,而不是编辑器层面的决定——这正是编辑器不该是你还在构建的东西的原因。

FAQ

常见问题

什么是落地页面构建器?

落地页构建器是一种可视化编辑器,用于创建无需手写HTML和CSS的竞选页面。实际上,它结合了拖放画布、可复用的区块库、模板、响应式编辑、表单、SEO控制以及发布步骤。

我能用GrapesJS构建一个落地页面构建器吗?

是的。GrapesJS 是一个用于构建可视化编辑器的框架,而不是成品,它提供画布、组件模型、拖放、样式管理器、图层树、资产管理和插件架构,而你则在上面构建落地页专属部分:你的区块库、模板以及围绕它们的应用程序。

GrapesJS 是一个开源的落地页面构建器吗?

GrapesJS 是开源的:核心以 BSD-3-Clause 许可证发布,官方的 React 封装则以 MIT 发布。两者都允许商业使用。这是一个你可以自行托管和嵌入的库——而不是托管的落地页服务。

我能创建一个拖放落地页构建器吗?

是的。拖放功能内置于核心中:块从调色板拖到画布上,组件可以重新排序和嵌套。你定义的是存在哪些块——hero、功能、定价、FAQ——因为核心默认不提供任何块。

我可以导出HTML和CSS吗?

是的。editor.getHtml() 返回画布渲染的标记,editor.getCss() 返回样式表,包括媒体查询。你也可以调用 getProjectData(),调用你重新打开编辑器的 JSON。提供该输出是你的应用职责,这也是保持页面发布快速的原因。

我可以创建可重复使用的落地页块吗?

是的,它主要负责将GrapesJS转变为落地页构建器。editor.Blocks.add()注册一个带有标签、类别及其内容的块;包含hero、特色、推荐、定价、FAQ和CTA块的部分库,使编辑器成为专门设计而非通用的。

我可以创建自定义组件吗?

是的。Components API 允许你用自己的 traits 定义组件类型,允许子节点、工具栏操作和行为,这样编辑器就能强制执行你的设计系统,而不是让用户随意组装标记。

我能构建一个自托管的落地页面构建器吗?

是的。GrapesJS 完全运行在你的应用内部——路径中没有托管的编辑器服务。项目数据通过你编写的存储适配器进入数据库,发布页面则由你自己的基础设施提供。

我可以在我的SaaS中嵌入落地页构建器吗?

是的。编辑器会挂载到你自己应用路由中的容器元素中,因此认证、租户和权限保持原有状态。多租户工作——项目、角色、计费、发布——是应用程序代码,不是编辑器代码。

我可以添加表格吗?

是的。表单组件可以注册为块,GJS.Market目录中包含表单插件。提交内容应发布到您自己的端点,以确保验证、速率限制、同意和CRM路由均由您掌控。

我可以添加SEO控制吗?

可以,而且它们属于你的应用程序,而不是画布。把标题、meta description、canonical、Open Graph、社交图片、robots 和结构化数据作为页面记录上的字段来存储,并在发布时由你的渲染器输出。编辑器内的审计插件可以在页面上线前做检查。

我可以加A/B检测吗?

是的,但你实现了。GrapesJS 没有实验功能,目录中也没有 A/B 测试插件。一旦页面存储为数据,变体就是同一条条的另一行——你的应用分配访问者,持久化赋值并比较转换。

我可以把项目保存到我自己的数据库里吗?

是的。存储模块提供本地和远程选项,Storage.add() 注册了一个完全自定义的适配器,所以加载和存储都变成了调用你自己的 API。将输入的项目数据视为不可信输入,并在服务器端验证。

我能做一个白标落地页构建器吗?

是的。编辑器UI由你配置的面板和命令组成,所以chrome、图标、字体和术语完全可以是你自己的——或者你的客户。屏幕上没有任何东西需要标识GrapesJS。

我可以和React一起使用吗?

是的。有一个官方的 React 封装器 @grapesjs/react,它会在 React 中围绕画布构建你的编辑器 UI。注意它不会在画布内渲染 React 组件——画布仍然是 DOM 文档——而且需要同时安装 grapesjs 核心。

我可以和Next.js一起使用吗?

是的,但有一个限制:编辑器在初始化时测量 DOM,所以必须是仅客户端的。导入带有 dynamic() 和 ssr: false 的编辑器组件,保持认证和数据加载在路由的服务器端,编辑器不要出现在你已发布页面使用的捆绑包中。
开始

打造你自己的落地页面构建器

从GrapesJS的视觉编辑引擎开始,针对你的产品进行定制,并通过GJS.Market插件添加所需的功能。

开发者

开始

安装核心,注册你的第一个部分库,然后用项目数据渲染页面。

开始
参赛队伍

浏览插件

添加块、模板、表单、SEO审计和发布目标,无需自己编写。

浏览插件
产品团队

打造你的落地页面构建器

告诉我们构建器需要做什么,我们会为编辑器、插件栈和集成进行范围规划。

打造你的落地页面构建器

构建产品所需的编辑器——而不是从头重建编辑器引擎。