grapesjs
免费开源的拖拽式网页构建框架,无需编码即可快速生成 HTML 模板和 Newsletter
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
免费开源的拖拽式网页构建框架,无需编码即可快速生成 HTML 模板和 Newsletter
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你需要搭建一个公司官网或活动推广页面。传统方式需要找设计师出图、前端工程师写代码,来回沟通修改至少要两三周。但如果有一个工具,让你像搭积木一样——拖拽组件、调整样式、实时预览——普通人用鼠标"画"出一个专业级网页,你会不会觉得不可思议?
GrapesJS 就是这样一个工具。它是一个免费、开源的可视化网页构建框架(Web Builder Framework),让用户无需编写代码,通过拖拽方式快速构建 HTML 模板、落地页、新闻通讯(Newsletter)和移动端页面。
GrapesJS 的诞生源于一个非常具体的行业痛点:内容管理系统(CMS)的模板创作效率太低。
在 WordPress、Drupal 这样的 CMS 中,模板(Template)通常由三部分组成:结构(HTML)、样式(CSS)和变量。开发者需要手动编写 HTML/CSS 代码,每次修改都要改代码,不仅效率低,还容易出错。更重要的是,当 CMS 需要快速产出大量定制化页面(比如电商的促销页、新闻网站的专题页)时,传统的"开发者写代码"模式根本无法支撑这个需求。
GrapesJS 的核心思路是:把模板创作的权力还给内容创作者。它提供了一个嵌入式的可视化编辑器,任何基于 GrapesJS 构建的 CMS 都可以让编辑人员在浏览器里直接"画"出页面——所见即所得,拖拽即发布。
这个项目最早由 Artur Artec 发起(GitHub 账号 arturo- 前缀),后来由 GrapesJS 团队持续维护。目前项目在 GitHub 上已积累超过 25,800 颗星,是同类型开源可视化编辑器中 star 最多的项目之一。2025 年,GrapesJS 获得了 React 19 支持、Iconify 图标选择器集成,以及全新的高性能 VirtualList 组件,持续活跃迭代中。
如果把 GrapesJS 比作什么,它更像是网页版的 Canva——只不过面向的是开发者和技术团队,而非普通消费者。
GrapesJS 提供了一个完整的编辑器界面,内置了多个功能模块:
| 模块 | 功能说明 |
|---|---|
| 块管理器(Block Manager) | 预置的网页组件(图片块、文字块、按钮块等),拖拽到画布即可使用 |
| 样式管理器(Style Manager) | 调整选中元素的颜色、字体、间距、边框等 CSS 样式 |
| 图层管理器(Layer Manager) | 查看页面 DOM 树结构,管理和隐藏各图层 |
| 代码查看器(Code Viewer) | 查看/编辑生成的 HTML/CSS/JavaScript 代码 |
| 资源管理器(Asset Manager) | 上传和管理图片、视频等媒体资源 |
GrapesJS 不仅仅是"拖拽组件"这么简单。它真正的价值在于提供了一套可编程的编辑器框架,让开发者可以高度定制编辑器的功能。
GrapesJS 的插件机制是其最具生命力的设计。开发者可以通过插件:
社区已经涌现了大量插件,涵盖 MJML 邮件模板支持、React/Vue 集成、电商组件库等功能方向。
GrapesJS 默认支持将页面内容存储在本地(localStorage)或远程服务器(通过自定义存储适配器)。这意味着用它构建的页面可以随时保存、恢复,不依赖任何后端——纯前端方案也可以完整工作。
GrapesJS 有一个专门的 Newsletter 编辑器 demo,可以制作兼容 MJML 标准的邮件模板。这对于需要大量发送推广邮件的电商、SaaS 公司来说非常实用——再也不用在各种邮件客户端里调试"为什么在 Gmail 里显示正常,在 Outlook 里却乱了"这类头疼问题。
GrapesJS 的官方文档覆盖了英文、中文、韩文等多语言版本,文档质量极高,包含了详细的 API 手册、入门指南和模块参考文档。

图1:资产资源管理器(Asset Manager)面板,支持拖拽上传和图片管理

图2:GrapesJS 画布区域与侧边面板的典型布局

图3:画布中选中元素时显示的交互手柄,支持拖拽缩放和移动
从代码层面看,GrapesJS 是一个纯前端 TypeScript 单体仓库(monorepo),核心使用 Backbone.js 框架构建,辅以 CodeMirror 代码编辑器(用于代码预览功能)。
项目采用 pnpm workspace 管理,分为两个主要子包:
这是一个典型的"小核心 + 大生态"架构:核心库保持轻量和通用,具体功能通过插件扩展实现。
GrapesJS 本身不包含任何服务端组件。它是一个纯 JavaScript 库,通过 <script> 标签或 npm 引入即可使用。编辑器状态完全在浏览器内存中运行,通过 Storage API(localStorage 或自定义)持久化数据。这种设计让它可以嵌入到任何技术栈中——无论是 React、Vue 还是传统服务器渲染页面。
项目使用 ESLint + Prettier 做代码规范检查,有完整的 TypeScript 类型覆盖。测试套件通过 GitHub Actions 自动化运行,构建产物会发布到 npm 和 CDNJS。
GrapesJS 的使用分为两个层次:
对于开发者:通过 npm 安装 grapesjs 包,使用 JavaScript/TypeScript 初始化编辑器,配置插件和自定义组件,然后嵌入到目标页面中。项目提供了 TypeScript 声明文件,IDE 自动补全体验良好。CLI 工具可以快速生成包含完整编辑器 demo 的项目骨架。
对于非技术用户:如果使用基于 GrapesJS 构建的 SaaS 产品(如 GrapesJS Studio),用户完全不需要接触代码,只需要使用可视化界面拖拽即可。但 GrapesJS 本身作为框架,主要面向开发者集成使用。
GrapesJS 也有一些不得不提的局限:
1. 学习曲线不低:虽然宣传是"无代码"工具,但如果想深度定制(比如开发自定义插件),开发者需要熟悉 Backbone.js 框架、GrapesJS 的组件模型(Component Type)和命令系统(Command),学习成本并不低。
2. 生成的 HTML 结构复杂:GrapesJS 生成的 HTML 带有大量 data-gjs-* 属性和内联样式,SEO 友好性不如手写代码。在需要干净 HTML 输出的场景下,需要额外写导出过滤器。
3. 移动端编辑体验有限:虽然可以预览移动端视图,但编辑体验主要还是桌面端。对比 Figma 这类专业设计工具,在响应式编辑这块还有差距。
GrapesJS 的出现和流行,折射出近年来 no-code/low-code 运动的一个深层趋势:把专业工具的能力,下放给非技术用户,同时不剥夺技术用户的扩展自由。
在 GrapesJS 之前,市场上已有的可视化编辑器要么是功能受限的 SaaS 产品(不能定制),要么是过于技术化的框架(门槛太高)。GrapesJS 找到了一个巧妙的平衡点——核心引擎足够简单,插件机制足够灵活,让它既能被技术团队深度定制,又能通过 SaaS 产品让普通用户开箱即用。
从 25,800 颗星和持续活跃的社区可以看出,这个方向确实击中了市场的真实需求。随着 AI 生成代码(AI coding)能力的增强,GrapesJS 这类可视化编辑器未来很可能与 AI 结合——让用户描述需求,AI 生成组件,再由用户可视化调整,实现"言出法随"的页面构建体验。