PageKit: el creador de sitios GrapesJS autoalojado, con el código fuente incluido. Obtener acceso anticipado

Constructor HTML de arrastrar y soltar

Crea un generador de HTML de arrastrar y soltar con GrapesJS

Construye visualmente páginas HTML con componentes de arrastrar y soltar, editar estilos sin escribir CSS a mano y mantener el control del HTML y CSS que produce tu aplicación.

Código abiertoAutoalojadoSalida HTML + CSSExtensibleEmbebible

26k+

GitHub estrellas

1.4M+

Descargas mensuales de npm

100+

Plugins en GJS.Market

BSD-3-Clause

Licencia principal

Visual · HTML · CSS

Una sección, tres vistas

Este es todo el argumento de la página en un solo componente. La pestaña Visual es lo que tu usuario arrastra y edita. Las otras dos son lo que el editor te devuelve al código — nada oculto, nada propietario, solo texto de marcado y hojas de estilo que puedes almacenar, transformar y publicar como quieras.

<div id="editor">

Lo que ve el usuario: bloques a la izquierda, la página en el centro, controles de estilo a la derecha.

Bloques

  • Hero
  • Texto
  • Imagen
  • Botón
  • Columnas
  • Formulario
your-app.com/editor
section.hero

Build faster

Launch your next project.

Get started

Ambos paneles de código son los valores de retorno reales de GrapesJS 0.23.6, reindentados para poder leerlos: cada llamada devuelve en realidad una sola línea. Dos detalles que conviene saber antes de construir sobre ellos: getHtml() serializa el wrapper, así que el resultado queda encerrado en <body>…</body>, y getCss() expande las declaraciones abreviadas en propiedades individuales y normaliza los colores a rgb(). La hoja de estilos empieza además con un pequeño reinicio que GrapesJS inyecta; getCss({ avoidProtected: true }) lo omite.

La idea

Construye HTML visualmente en lugar de escribir cada diseño a mano

Un generador de HTML de arrastrar y soltar permite a los usuarios ensamblar las estructuras de las páginas visualmente mientras tu aplicación mantiene el control del contenido subyacente, el estilizado y el flujo de trabajo de publicación.

Arrastrar y soltar

Los usuarios mueven bloques y componentes a un lienzo en lugar de editar un archivo plantilla. Tú decides qué bloques existen, dónde pueden dejarse y qué pueden contener.

Edición visual

El contenido, la maquetación y los estilos se editan mediante viñetas en lugar de escribir a mano cada regla CSS. El editor convierte esas elecciones en reglas ordinarias de hojas de estilo.

Salida HTML + CSS

Recupera el HTML y CSS resultantes en dos cadenas simples y llévalos a tu propia aplicación, tu propio almacenamiento y tu propio flujo de trabajo de publicación.

Definición

¿Qué es un generador de HTML de arrastrar y soltar?

Es un editor que permite a una persona ensamblar una página web arrastrando piezas a un lienzo, ajustándolas mediante controles en lugar de código, y sacando HTML y CSS reales por el otro lado. Para hacerlo de forma convincente, tiene que combinar todo lo siguiente en un solo software coherente:

  • Componentes HTML — cada elemento del lienzo modelado como algo sobre lo que el editor puede razonar
  • Un lienzo que renderiza la página tal y como lo hace el navegador, pero que se mantenga editable
  • Arrastrar y soltar, con objetivos válidos en lugar de cajas flotantes
  • Bloques reutilizables que un usuario puede extraer repetidamente
  • Controles de estilo que escriben reglas CSS reales
  • Edición responsiva por punto de interrupción
  • Gestión de activos para imágenes y medios
  • Persistencia, para que una página a medio terminar sobreviva a una pestaña cerrada
  • Exportación y publicación del HTML y CSS terminados

La diferencia entre un editor visual de HTML y una simple librería de arrastrar y soltar es que el editor gestiona todo el estado de edición — selección, componentes, estilos, comandos, almacenamiento y salida — como un solo sistema. Una biblioteca mueve un cuadro por la pantalla; un editor sabe qué es ese recuadro, qué puede contener, a qué regla CSS pertenece y cómo serializar el resultado.

Editor en directo

Prueba con un editor HTML real

Tres versiones públicas de GrapesJS. Nada carga hasta que das clic — los fotogramas no se solicitan, así que esta sección no te cuesta nada al llegar.

Abrir en una pestaña nueva

La demo original de GrapesJS. Arrastra un bloque, seleccionalo, cambia un estilo — luego abre la vista de código en su barra de herramientas y observa cómo cambian el HTML y el CSS contigo.

grapesjs.com/demo.htmlGratis

Carga una demo de terceros en un iframe. No se solicita nada hasta que haces clic.

Flujo de trabajo

De arrastrar y soltar a HTML de producción

  1. 1
    01

    Elige un bloque

    El usuario elige de la paleta que definiste. Un bloque es un punto de partida reutilizable y nombrado — un hero, una tabla de precios, un formulario — no un div vacío arbitrario.

  2. 2
    02

    Arrástrala al lienzo

    El editor decide dónde puede aterrizar legalmente el bloque, inserta el componente y lo selecciona. Las reglas de drop son tuyas para establecer por tipo de componente.

  3. 3
    03

    Editar contenido y estilos

    El texto se edita en su lugar; el diseño, el espaciado, la tipografía y el color provienen del Style Manager. Cada cambio se convierte en una regla CSS que el editor registra.

  4. 4
    04

    Guarda el proyecto

    El Storage Manager envía el estado del editor al punto final al que lo apuntes. Este es el estado necesario para seguir editando, no la página terminada.

  5. 5
    05

    Exportar o publicar HTML + CSS

    Llama a getHtml() y getCss(), y luego haz lo que exija tu producto: sanear el HTML, envolverlo en tu plantilla, versionarlo, cachearlo y desplegarlo.

Superficie de edición

¿Qué pueden editar los usuarios?

Exactamente tanto como permitas. Cada uno de estos es algo que el editor puede exponer — y algo que puedes fijar por tipo de componente para que un marketer no pueda romper un diseño diseñado por un ingeniero.

Contenido

Texto, encabezados, enlaces y cualquier contenido que marques como editable. Los componentes que prefieres mantener intactos pueden simplemente dejarse no editables.

Distribución

Secciones, columnas, contenedores y el espaciado entre ellos, a través de los controles Dimension y Flex en el Style Manager.

Tipografía

Familia de fuentes, tamaño, grosor, altura y alineación de línea, escritos como declaraciones CSS ordinarias.

Colores

Texto, fondos, bordes y otras propiedades visuales. Los valores se serializan como rgb() en la hoja de estilos emitida.

Imágenes y medios

Se gestiona a través del Asset Manager, que puedes apuntar a tu propio punto final de subida o a un proveedor de almacenamiento.

Estilos responsivos

Reglas asignadas a un dispositivo. Estilizar mientras un punto de interrupción está activo emite una consulta de medios coincidente en lugar de sobrescribir la regla base.

Componentes

Elementos estructurados y reutilizables definidos por ti — la unidad en la que se convierte un bloque una vez que se deja caer, y lo que tu app puede reconocer después.

Atributos y rasgos

Los rasgos se convierten en los campos del panel de ajustes, así que un componente personalizado puede mostrar un titular y un enlace objetivo y nada más.

Algunos de estos son configuraciones más que predeterminados. GrapesJS incluye el Style Manager con General, Flex, Dimension, Tipografía, Decoraciones y Extra de fábrica; las subidas de assets, el comportamiento de texto enriquecido y los permisos por componente son cosas para las que puedes cablear — o instalar un plugin.

Salida

Controlas el HTML y el CSS

Un editor visual solo es útil si el resultado puede encajar en tu aplicación. GrapesJS mantiene dos cosas separadas, y la distinción importa más que cualquier lista de características: el estado que necesita para seguir editando y el marcado que realmente reciben tus usuarios.

Del lienzo a la página publicada

  1. Editor visual
  2. Estado del proyecto
  3. HTML + CSS
  4. Tu backend
  5. Tu publicación
publish.jsJS
// What the editor needs to keep editing — components, styles,
// pages, assets and symbols. Store this to resume a session.
const projectState = editor.getProjectData();

// What your users actually receive. Two plain strings.
const html = editor.getHtml();  // <body>…</body>
const css = editor.getCss();    // one line of CSS

// From here it is your application's decision: sanitize it, wrap it
// in your own layout, version it, cache it, put it behind your CDN.
await fetch(`/api/pages/${pageId}/publish`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ html, css }),
});
  • getProjectData() devuelve el estado editable — páginas, estilos, recursos, símbolos y fuentes de datos. Almacenalo para reanudar una sesión; no es lo que sirves a los visitantes.
  • getHtml() y getCss() devuelven cadenas. No hay tiempo de ejecución para instalar en la página publicada ni servicio de renderizado en el bucle.
  • El saneado, el uso de plantillas, el versionado, la caché y el despliegue siguen de tu lado. Eso es un límite, no una carencia: es justo lo que permite que la salida encaje en un producto que ya tienes.

Una nota sobre expectativas: la hoja de estilos emitida es fiel, no está ajustada a mano. Las propiedades abreviadas salen expandidas en propiedades individuales, los colores como rgb(), y se antepone un pequeño reinicio salvo que lo desactives. Trata la salida como una fuente fiable que post-procesas, igual que harías con el resultado de cualquier paso de compilación.

Construir frente a empezar desde un núcleo

¿Por qué crear un editor HTML desde cero?

Todo editor visual de HTML necesita el mismo conjunto de subsistemas antes de poder hacer algo interesante. La cuestión no es si los vas a necesitar, sino si escribirlos es la parte de tu producto que vale la pena para los próximos seis meses de tu equipo.

Lo que necesita un editor HTML antes de editar nada

  • Lienzo editable
  • Arrastrar y soltar
  • Modelo de componentes
  • Selección
  • Paleta de bloques
  • Controles de estilo
  • Puntos de quiebre
  • Biblioteca de activos
  • Deshacer / volver a hacer
  • Serialización
  • Almacenamiento
  • Salida HTML
  • Salida CSS
  • API de plugins
Hazlo tú mismo

Eres dueño de los catorce

Y los posees permanentemente: el lienzo que tiene que mantenerse editable mientras se renderiza como un navegador, la lógica de drop-target, la pila de deshacer que sobrevive a todo lo demás, el serializador que convierte tu árbol en memoria de nuevo en marcado — además de todos los informes de errores contra ellos mientras el producto exista.

Empieza con GrapesJS

Empiezas donde ya funcionan

El lienzo, arrastrar y soltar, modelo de componentes, Block Manager, Style Manager, Device Manager, Asset Manager, deshacer historial, Storage Manager y las APIs de salida HTML/CSS vienen con el núcleo. Lo que escribes es la parte específica de tu producto.

Esto no es una afirmación de que GrapesJS sea tu producto completo. El almacenamiento, la autenticación, los permisos, la publicación, la sanitización y cada flujo de trabajo específico del producto siguen siendo tuyos — consulta el diagrama de arquitectura a continuación para ver exactamente dónde cae la línea.

Subsistema por subsistema

Lo que escribes y lo que ya existe

La columna de la derecha no garantiza que un subsistema esté terminado para tu caso de uso: nombra la parte de GrapesJS que amplías en lugar del archivo en blanco desde el que de otro modo empezarías.

Subsistema de editorConstrúyelo túEmpieza con GrapesJS
LienzoLo construyes túBase del editor
Arrastrar y soltarLo construyes túBase del editor
Modelo de componentesLo construyes túDomComponents
BloquesLo construyes túBlock Manager
Controles de estiloLo construyes túStyle Manager
Edición responsivaLo construyes túDevice Manager
ActivosLo construyes túAsset Manager
Deshacer / volver a hacerLo construyes túComandos e historial
AlmacenamientoLo construyes túStorage Manager
Salida HTMLLo construyes túeditor.getHtml()
Salida CSSLo construyes túeditor.getCss()
Componentes personalizadosLo construyes túDomComponents.addType
Arquitectura de pluginsLo construyes túAPI de plugins existente
Autorización y permisosLo construyes túTu solicitud
SanitizaciónLo construyes túTu solicitud
PublicaciónLo construyes túTu solicitud

Las tres últimas filas son las honestas. Nada de incrustar un editor elimina tu responsabilidad sobre quién puede editar qué, qué se almacena y qué llega al público.

Arquitectura

Cómo encaja un generador de arrastrar y soltar HTML en tu aplicación

El editor es una capa de tu producto — no el producto en sí. Tu aplicación conserva a los usuarios, los permisos, los datos y la decisión sobre qué se activa.

Tu solicitud

Tú eres dueño de la superficie

  • Usuarios
  • Autorización y permisos
  • Enrutamiento
  • Facturación
  • Navegación

Capa incrustada

Editor visual GrapesJS

Amplíalo con plugins
  • Lienzo
  • Bloques
  • Componentes
  • Estilos
  • Activos
  • Dispositivos
  • Persistencia

    Tu API

    • Storage Manager
    • Guardado automático
    • Versiones
  • Datos

    Tu base de datos

    • Proyectos
    • Páginas
    • Activos
  • Entrega

    Tu publicación

    • Vista previa
    • Aprobación
    • Live HTML
GrapesJS proporciona la capa visual de edición HTML. Todo lo que está encima y debajo — quién edita, qué se almacena, qué se publica — permanece dentro de la aplicación que ya tienes.
Bajo el capó

Los bloques de construcción detrás del editor

Cinco responsables hacen la mayor parte del trabajo. Los conocerás en menos de una hora desde que empiezas, así que merece la pena saber de qué es responsable cada uno.

Componentes

Los elementos HTML representados como componentes editables, con sus propias reglas sobre lo que contienen, si pueden arrastrarse y qué propiedades exponen.

Block Manager

La paleta. Los bloques son lo que los usuarios arrastran; cada uno nombra el componente en el que se convierte. El núcleo incluye una paleta vacía, así que lo que aparece ahí es totalmente tu decisión.

Style Manager

Controles visuales de propiedades CSS, agrupados en sectores — General, Flex, Dimension, Tipography, Decorations y Extra por defecto. Los sectores y propiedades son configurables.

Storage Manager

Persiste el estado del proyecto en almacenamiento local, un punto final remoto o un adaptador de almacenamiento que tú mismo escribas. El guardado automático es una bandera de configuración.

Asset Manager

Imágenes y medios: el selector que ven los usuarios y la ruta de subida detrás de él, que apuntas a tu propio endpoint o a un plugin de proveedor.

Componentes personalizados

Crea tus propios componentes HTML

Aquí es donde un constructor HTML deja de ser genérico. Define un tipo de componente, decide qué renderiza y expone solo las propiedades que los usuarios deberían controlar: el resto del marcado permanece exactamente como lo escribieron tus ingenieros.

hero-block.jsJS
// A block is what the user drags out of the panel.
editor.BlockManager.add('hero', {
  label: 'Hero',
  category: 'Sections',
  content: { type: 'hero' },
});

// A component type is what that block becomes on the canvas — and the
// only place you decide what the user may change about it.
editor.DomComponents.addType('hero', {
  model: {
    defaults: {
      tagName: 'section',
      attributes: { class: 'hero' },
      components: '<h1 class="hero__title">Build faster</h1>',
      // Traits become the fields in the settings panel.
      traits: [{ type: 'text', name: 'headline', label: 'Headline' }],
      droppable: false,
    },
  },
});
Salida → componente de → bloque

El bloque no es el componente

Cuatro cosas comparten nombre en la mayoría de los tutoriales y son realmente diferentes. Mantenerlos separados es la diferencia entre un constructor que puedes mantener y un montón de cadenas HTML.

  1. Bloquear
  2. Componente
  3. Rasgos
  4. Margen
  5. Tu solicitud

Bloquear

Lo que arrastra el usuario

Una entrada de paleta: una etiqueta, una categoría y el contenido que inserta. Puramente un punto de partida — no tiene vida después de la caída.

Componente

En qué se convierte

El tipo registrado en DomComponents. Decide la etiqueta, los hijos por defecto, si es posible soltar y cómo lo trata el editor a partir de ahí.

Rasgos

Qué pueden cambiar los usuarios

Los campos en el panel de ajustes. Un rasgo es un agujero deliberado en un componente que de otro modo está sellado — un titular, un enlace objetivo, un ID de plan.

Margen

Lo que sale

El componente se serializó de nuevo a HTML, con las clases y atributos que definiste, listo para lo que haga tu backend a continuación.

Diseña esta cadena deliberadamente y los usuarios no técnicos tienen verdadera libertad dentro de los límites que elijas. Si lo sáltas, habrás enviado un editor de texto que emite divs.

Bloques

Empieza con bloques HTML listos para fabricar

Estos son los tipos de secciones que casi todo constructor necesita desde el primer día, descritos por el marcado que emiten más que por su aspecto. Construyéndolos contra la API Block Manager, o instala un plugin de bloques y empieza desde una paleta completa.

  • Hero

    Una sección con un encabezado, un párrafo de apoyo y un enlace estilizado como un botón.

  • Cabecera

    Un encabezado con un elemento de logotipo y una lista de navegación que se pliega en anchos estrechos.

  • Características

    Un contenedor de cartas repetidas, cada una con una ranura de icono, un encabezado y una copia del cuerpo.

  • Precios

    Planifica tarjetas con un elemento de precio, una lista de características y un enlace de llamada a la acción.

  • Testimonios

    Elementos de cita bloqueada con una cita y una imagen de avatar opcional.

  • Galería

    Una cuadrícula de imágenes cuyas fuentes se llenan desde el Asset Manager.

  • CTA

    Una única sección centrada con un título y un enlace principal.

  • Formas

    Un elemento de forma con entradas etiquetadas y una acción que apuntas a donde quieras.

  • Pie de página

    Columnas de enlace, texto legal y navegación secundaria en un elemento de pie de página.

Vale la pena ser preciso: estos son ejemplos de tipos de bloques, no una lista de cosas integradas en GrapesJS. El núcleo comienza con un Block Manager vacío a propósito — qué paleta obtienen tus usuarios es una decisión que tomas, ya sea escribiendo los bloques o instalando uno de los plugins de bloques más abajo en esta página.

Casos de uso

¿Qué puedes construir?

El mismo núcleo de edición, señalando seis problemas diferentes. Cada uno de estos necesita control a nivel HTML por una razón distinta.

Público

¿Quién utiliza un editor visual en HTML?

Diferentes equipos llegan aquí por distintos motivos, pero el requisito es el mismo: edición visual que no les cueste el control del marcado.

Desarrolladores

Añadir edición visual a una aplicación que ya existe, sin tener que adoptar una plataforma ni reescribir el front-end en torno al runtime de otra persona.

Equipos SaaS

Convierte la creación de páginas en una función por la que los clientes pagan, con el editor en tu dominio y los datos en tu base de datos.

Equipos de CMS

Da a los equipos de contenido edición visual sin reemplazar el CMS debajo, porque lo que sale es HTML que el sistema ya maneja.

Agencias

Construye un sistema de edición de páginas con tus propios bloques y componentes, y luego reutilízalo entre proyectos del cliente en lugar de reconstruirlo por proyecto.

Plataformas de marketing

Permite que los usuarios compongan páginas de destino de forma visual mientras tu plataforma mantiene las plantillas, el seguimiento y la cadena de publicación consistentes.

Incrustación

Integra el HTML Builder en tu producto

No tienes que enviar usuarios a otra web para editar sus páginas. Monta el editor dentro de tu propia aplicación y mantén tu autenticación, navegación y backend existentes.

Dónde se sienta el editor

  1. Tu aplicación
  2. Auth
  3. Editor HTML
  4. Tu API
  5. Base de datos

En la práctica, esta es una ruta en tu app que renderiza un contenedor e inicializa el editor contra él. El usuario nunca sale de tu dominio, la sesión es la que ya tiene, y el proyecto carga y guarda a través de los endpoints que has escrito.

Almacenamiento

Guarda los proyectos de HTML Builder en tu propio backend

Apunta el Storage Manager a tu API y cada página se convierte en una fila en tu base de datos, detrás de tu propia autenticación. GrapesJS no aloja nada, y GJS.Market tampoco: nunca llega ningún contenido de usuario.

Dos cosas para guardar, no una

  1. Estado del editor
  2. Tu API de almacenamiento
  3. Tu base de datos
  4. HTML + CSS
  5. Página en directo
editor-storage.jsJS
const editor = grapesjs.init({
  container: '#editor',

  // Editor state goes to your API, behind your own authentication.
  storageManager: {
    type: 'remote',
    autosave: true,
    options: {
      remote: {
        urlStore: `/api/pages/${pageId}`,
        urlLoad: `/api/pages/${pageId}`,
        fetchOptions: { credentials: 'include' },
      },
    },
  },
});

Mantén la distinción clara. El estado del editor es lo que el editor necesita para reabrir una página y poder editarla más. La salida publicada es el HTML y CSS que recibe un visitante. Tienen diferentes ciclos de vida, diferentes reglas de acceso y normalmente tablas distintas — y un plugin puede ayudar con el cableado, pero la arquitectura es tuya.

Publicación

Tú decides cómo se publica HTML

  1. 1
    01

    Edición

    El usuario trabaja en el lienzo. Nada es público todavía; el editor solo toca el estado del proyecto.

  2. 2
    02

    Guarda un borrador

    El guardado automático o un guardado explícito escribe el estado a través de tu endpoint de almacenamiento, bajo tus reglas de permiso.

  3. 3
    03

    Vista previa

    Renderiza el HTML y CSS actuales en una ruta de vista previa para que el autor vea la página real, no el lienzo.

  4. 4
    04

    Aprobar

    Si tu producto necesita ser revisado, este es tu flujo de trabajo: el editor no tiene opinión sobre quién puede aprobar.

  5. 5
    05

    Publicar

    Toma getHtml() y getCss(), sanea el resultado, envuélvelo en tu plantilla, versiónalo y escríbelo allí donde sirvas tus páginas.

  6. 6
    06

    Live HTML

    La página publicada es HTML y CSS simples en tu infraestructura. No se requiere tiempo de ejecución de editor para que un visitante la vea.

Esta es la diferencia más clara respecto a un creador de páginas alojado. No hay un proveedor que decida cuándo tu página se publica, en qué dominio se atiende o qué pasa si dejas de pagar.

Responsive

Construye HTML Responsive de forma Visual

El Device Manager cambia el lienzo entre anchos, y los estilos establecidos mientras un dispositivo está activo se escriben como una consulta multimedia con alcance a ese ancho en lugar de sobrescribir la regla base. GrapesJS viene con Escritorio, Tableta, Horizontal móvil y Vertical móvil; la lista y sus anchos son configuración, no un conjunto fijo.

EscritorioPor defecto
Tablet770px
Retrato móvil320px

Qué pueden cambiar los usuarios por punto de ruptura

  • Espaciado
  • Tipografía
  • Distribución
  • Visibilidad
  • Alineación
  • Fondos

Los anchos que se muestran son los valores predeterminados de GrapesJS. Vale la pena decirlo claramente: el editor define las reglas CSS — cómo se renderiza finalmente una página publicada sigue dependiendo del marcado y la hoja de estilos que envíes y del navegador que las lea.

Ecosistema

Extiende tu HTML Builder con plugins

Todo lo que hay a continuación es una lista real en GJS.Market, con el nombre, precio y miniatura mostrados en directo desde el catálogo. Agrupado de la forma en que esta página piensa sobre el problema: primero código y salida, luego los paneles que los rodean.

Texto enriquecido

Amplía el editor de texto en línea para que la edición de contenido se sienta como un documento en lugar de un campo de código.

Explora esta categoría
Stacks

Construye tu pila de constructores de HTML

Tres configuraciones iniciales, montadas solo a partir de anuncios que realmente existen. Trátalos como una forma para adaptar, no como un paquete para comprar.

Los precios se muestran en directo desde el catálogo.

Enfoques

Constructor de arrastre y solta en HTML vs Otros enfoques

No son cuatro productos compitiendo por el mismo puesto, sino cuatro oficios diferentes. El objetivo de la tabla es hacer explícito el intercambio, no declarar ganador.

ConsideraciónGrapesJSBiblioteca de arrastrar y soltarCreador de páginas alojadoConstruir desde cero
Incluye editor visualParcial — solo el gestoLo que construyas
Control sobre HTML y CSSAlta — la salida es tuya para post-procesarAlto — tú escribes el margenVaría según el proveedorTotal
AutoalojadoNormalmente no
Incrustable en tu appDepende del proveedor
Modelo de componentes y rasgosIncorporadoEscríbela túModelo del proveedorEscríbela tú
Controles de estilo y puntos de interrupciónIncorporadoTú los escribesIncorporadoTú los escribes
Hora de un editor en activoDíasMesesActasMeses a años
Personalización de productosAltoAltoDelimitado por el proveedorNo Acotado
Mantenimiento continuoTu integración, más un núcleo upstreamTodo el editorVendedoresTodo, para siempre
Licencia y costeNúcleo BSD-3-Clause, $0 para usarNormalmente permisivoSuscripciónTiempo de ingeniería

Verificado frente al núcleo GrapesJS (BSD-3-Clause, v0.23.6) en 2026-09-03. Las filas de constructores alojados son deliberadamente vagas porque sus capacidades varían según el proveedor y cambian con frecuencia — comprueba el producto específico que estás considerando en lugar de confiar en una afirmación a nivel de categoría.

Error común

Una biblioteca de arrastrar y soltar no es un generador de páginas

Este es el error de juicio más caro en este ámbito. Un equipo elige una biblioteca de listas ordenables, envía una demo en una semana y luego pasa un año descubriendo qué faltaba.

Lo que te da una biblioteca de arrastrar y soltar

Todo lo necesario para mover una caja de un lugar a otro, y nada más allá. Realmente útil — para reordenar una lista.

  • Elementos arrastrables
  • Zonas de lanzamiento
  • Movimiento
  • Clasificación

Lo que también tiene que gestionar un editor visual de HTML

Estado que persiste en todos esos gestos, y un serializador que puede convertir todo en marcado que un navegador renderizará.

  • Estado componente
  • Selección
  • Estilo
  • Bloques
  • Activos
  • Controles responsivos
  • Deshacer / volver a hacer
  • Almacenamiento
  • Serialización
  • Exportación
  • Arquitectura de plugins

Arrastrar y soltar es una interacción. Un creador de páginas es todo un sistema de edición.

Inicio rápido

Empieza tu generador de arrastrar y soltar HTML

Un paquete, un contenedor, una llamada de entrada. Todo en esta página crece a partir de estas pocas líneas.

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

// Mount the editor on any container in your own application.
const editor = grapesjs.init({
  container: '#editor',
  height: '100vh',
  // Core ships no blocks: you decide what users are allowed to drag.
  blockManager: { blocks: [] },
});

El editor ahora se ejecuta pero tiene una paleta vacía — el núcleo deliberadamente no envia bloques. Registra el primero y el tipo de componente en el que se convierte en:

hero-block.jsJS
// A block is what the user drags out of the panel.
editor.BlockManager.add('hero', {
  label: 'Hero',
  category: 'Sections',
  content: { type: 'hero' },
});

// A component type is what that block becomes on the canvas — and the
// only place you decide what the user may change about it.
editor.DomComponents.addType('hero', {
  model: {
    defaults: {
      tagName: 'section',
      attributes: { class: 'hero' },
      components: '<h1 class="hero__title">Build faster</h1>',
      // Traits become the fields in the settings panel.
      traits: [{ type: 'text', name: 'headline', label: 'Headline' }],
      droppable: false,
    },
  },
});
  1. Instala grapesjs
  2. Métalo en un contenedor
  3. Registra tus bloques y tipos de componentes
  4. Configurar el Style Manager
  5. Apunta el Storage Manager a tu API
  6. Publicar getHtml() y getCss()

A partir de aquí el trabajo es trabajo de producto: qué bloques reciben tus usuarios, qué se les permite cambiar y qué hace tu backend con el marcado que sale.

Guías relacionadas

Guías relacionadas de GJS.Market

Esta página cubre la edición y salida a nivel HTML. Las guías vecinas toman el mismo núcleo desde otros ángulos.

Preguntas frecuentes

Preguntas sobre el constructor de HTML con arrastrar y soltar

¿Qué es un generador de HTML de arrastrar y soltar?

Un editor que permite al usuario ensamblar una página web arrastrando bloques predefinidos a un lienzo y ajustándolos mediante controles en lugar de código, mientras produce HTML y CSS reales como resultado. Combina un modelo de componentes, un lienzo, una paleta de bloques, controles de estilo, edición responsiva, manejo de recursos, persistencia y exportación en un solo sistema.

¿Qué es un editor visual HTML?

Lo mismo que se describe desde el lado de la edición: una herramienta donde los cambios se hacen haciendo clic, arrastrando y ajustando propiedades en lugar de escribir marcado, y donde lo que ves en pantalla corresponde al HTML y CSS que se publicarán.

¿Puedo construir un editor HTML con GrapesJS?

Sí — para eso está GrapesJS. Proporciona el lienzo, arrastrar y soltar, el modelo de componentes, el Block Manager, el Style Manager, el Device Manager, el Asset Manager, el historial de deshacer, el Storage Manager y las APIs de salida HTML/CSS. Añades los bloques, los tipos de componentes, el backend y el flujo de trabajo de publicación.

¿Es GrapesJS un editor HTML?

GrapesJS es un marco para construir editores HTML más que un producto de edición terminado. Por defecto, incluye un núcleo de edición sin bloques en la paleta, precisamente porque qué bloques reciben tus usuarios está pensado para que la decisión sea tuya.

¿Puedo arrastrar y soltar elementos HTML?

Sí. Los elementos en el lienzo son componentes que pueden arrastrarse, anidarse y reordenarse, y cada tipo de componente puede declarar dónde puede ser soltado y qué puede contener — así que un diseño diseñado por un ingeniero no tiene que ser rompible por un editor de contenido.

¿Puedo crear componentes HTML personalizados?

Sí, con editor.DomComponents.addType(). Defines la etiqueta, los atributos por defecto y los hijos, si el componente es desplegable o arrastrable, y qué rasgos aparecen en el panel de configuración. Un bloque entonces hace referencia a ese tipo como lo que inserta.

¿Puedo editar CSS visualmente?

Sí. El Style Manager expone las propiedades CSS como controles, agrupadas por defecto en General, Flex, Dimensión, Tipografía, Decoraciones y Sectores Extra. Qué sectores y propiedades aparecen es configurable, así que puedes reducir el panel solo a lo que tus usuarios deberían tocar.

¿Puedo exportar HTML y CSS?

Sí. editor.getHtml() devuelve el marcado y editor.getCss() devuelve la hoja de estilos, ambos como cadenas de texto. Dos detalles que conviene saber: getHtml() serializa el wrapper, de modo que el resultado queda encerrado en un elemento body, y getCss() expande las declaraciones abreviadas en propiedades individuales y normaliza los colores a rgb().

¿Puedo guardar proyectos de HTML Builder en mi base de datos?

Sí. El Storage Manager puede configurarse como un tipo remoto con URLs de carga y almacenamiento apuntando a tu propia API, incluyendo tus propias opciones de obtención y credenciales, así que cada proyecto es simplemente una fila en tu base de datos detrás de tu autenticación existente.

¿Puedo conectar el editor a mi API?

Sí, y en más de un sitio: endpoints de almacenamiento para el estado del proyecto, un endpoint de subida para el Asset Manager, y el endpoint de publicación que llames con el HTML y CSS exportados. Nada de eso pasa por un tercero.

¿Puedo autoalojar un creador de páginas HTML?

Sí. GrapesJS es un paquete npm que se ejecuta en el navegador dentro de tu propia aplicación. No hay servicio alojado en la ruta, no hay verificación de claves de licencia ni cuenta requerida, así que el editor funciona en una red interna o detrás de un cortafuegos.

¿Puedo incrustar un editor HTML en mi SaaS?

Sí. Monta el editor en un contenedor dentro de una ruta de tu propia aplicación. Los usuarios mantienen tu autenticación y navegación, y las páginas que crean se almacenan en tu backend en lugar de en las de un proveedor.

¿Puedo crear un creador de páginas web con GrapesJS?

Sí. La edición de varias páginas, las plantillas, los recursos y el almacenamiento están todos cubiertos por el núcleo más los plugins disponibles. Lo que distingue a un creador web de un editor de una sola página es principalmente la capa de gestión y publicación de páginas que construyes alrededor del editor.

¿Puedo crear un generador de páginas de aterrizaje?

Sí, y es uno de los usos más comunes. Define los bloques que permite tu sistema de diseño, expone un conjunto limitado de rasgos, y los profesionales del marketing pueden crear páginas de campaña que sigan generando las clases y la estructura que tus ingenieros esperan.

¿Puedo crear un generador de correo electrónico?

Sí, pero a través de la ruta del correo electrónico en lugar de la ruta de la página web. El HTML del correo tiene sus propias limitaciones, así que GrapesJS lo cubre con MJML y presets de boletín que emiten marcado en tabla y estilo en línea en lugar de CSS de diseño moderno.

¿Puedo usar GrapesJS con React?

Sí. Hay un envoltorio oficial de React publicado como @grapesjs/react, con licencia MIT, que monta el editor como componente y gestiona su ciclo de vida. El núcleo del editor en sí es agnóstico respecto al framework y funciona igual en la parte inferior.

¿Puedo usar GrapesJS con Next.js?

Sí, con una advertencia: el editor necesita el DOM, así que no debe renderizarse en servidor. Cárgalo en un componente solo cliente o en una importación dinámica con SSR desactivado, e inyáctalo después de que exista el contenedor.

¿Cuál es la diferencia entre una biblioteca de arrastrar y soltar y un generador de páginas?

Una biblioteca de arrastrar y soltar proporciona una interacción: elementos arrastrables, zonas de solta, movimiento y ordenación. Un creador de páginas también debe gestionar el estado de los componentes, la selección, el estilo, los bloques, los recursos, las reglas responsivas, deshacer el historial, almacenamiento, serialización, exportación y una arquitectura de plugins. Arrastrar y soltar es un gesto; un creador de páginas es un sistema completo de edición.

¿GrapesJS es gratuito para uso comercial?

El núcleo GrapesJS se publica bajo la licencia BSD-3-Clause, que permite su uso, modificación y distribución comerciales, sujeto a sus condiciones de atribución y no endoso. El envoltorio oficial de React, @grapesjs/react, es MIT. Los plugins y plantillas vendidos en GJS.Market llevan sus propias licencias, listadas en cada página del producto. Lee tú mismo el texto de la licencia antes de enviarlo — esto es un resumen, no asesoramiento legal.
Empieza

Crea tu generador HTML de arrastrar y soltar

Empieza con GrapesJS, ofrece a los usuarios una experiencia visual de edición HTML y mantén el control de tu aplicación, datos y flujo de trabajo de publicación.

Empieza a construir

Instala el editor

Un paquete npm y una llamada de iniciación. Tendrás un lienzo funcional antes de terminar tu café.

Prueba GrapesJS
Ampliación

Añade lo que preferirías no escribir

Paletas de bloques, vistas de código, controles de estilo, adaptadores de almacenamiento y herramientas de exportación — listados reales, precios reales.

Explora los plugins GJS.Market
Aprende

Lee la documentación

Componentes, bloques, estilos, almacenamiento y la API de plugins, directamente del proyecto upstream.

Lee la guía del constructor

Arrastra. Suelta. Edita el HTML. Controla la salida.