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

Creador de páginas Angular

Creador de páginas Angular con GrapesJS

Crea un creador de páginas visual de arrastrar y soltar para Angular con bloques, componentes, plantillas, edición adaptada y tu propio flujo de trabajo de publicación.

Arrastrar y soltar visualComponentes personalizadosBloques reutilizablesEdición responsivaTu backendExtensible con plugins

26k+

GitHub estrellas

1.4M+

Descargas de npm por mes

100+

Plugins en GJS.Market

$0

Matrícula, siempre

Ver cómo funciona

Esto es lo que verían tus usuarios

Tres editores GrapesJS reales, cargados solo cuando los pides. Ninguna de estas demos es una aplicación Angular — y ese es precisamente el objetivo. GrapesJS se renderiza en un elemento contenedor que posee, así que la superficie de edición se ve y se comporta igual que el framework que aloja la página a su alrededor.

Abrir en una pestaña nueva

El editor de stock: lienzo, bloques, árbol de capas, gestor de estilos y conmutador de dispositivos. Esta es la base desde la que empiezas antes de añadir un solo bloque propio.

grapesjs.com/demo.htmlGratis

Carga un editor de terceros en directo desde grapesjs.com.

Empieza aquí

Crea páginas visuales sin construir el editor desde cero

Crear un creador de páginas requiere mucho más que unos pocos componentes de Angular. Un editor visual listo para producción necesita todos estos antes de que alguien pueda enviar una página con él:

  • Arrastrar y soltar
  • Lienzo
  • Componentes
  • Bloques
  • Capas
  • Estilos
  • Edición responsiva
  • Gestión de activos
  • Plantillas
  • Almacenamiento de proyectos
  • Exportación
  • Publicación

GrapesJS proporciona la base visual de edición para la mayor parte de esa lista, así que tu aplicación Angular puede gastar su presupuesto en tu producto y en tu lógica de negocio. Los dos últimos — donde se almacenan los proyectos y cómo se activan las páginas — siguen siendo tuyos, porque son las partes que tienen que encajar con tu infraestructura.

El núcleo GrapesJS es de código abierto bajo la licencia BSD-3-Clause, versión 0.23.6, sin ninguna tasa de licencia a escala.

Explora GrapesJS
Arquitectura

Cómo funciona un creador de páginas Angular

El editor es una ruta dentro de tu aplicación, no un sustituto para ella. Todo lo que está encima de la capa de edición se queda exactamente donde ya lo han puesto los equipos de Angular.

  1. Aplicación Angular

    Todo lo que hace que tu producto sea tuyo, sin cambiar.

    • Autenticación
    • Usuarios
    • Facturación
    • Enrutamiento
    • Lógica de negocio
  2. Constructor de páginas visual

    Una ruta cargada por pereza, un componente que posee el contenedor y un servicio que posee la instancia del editor.

    • Ruta de editor
    • Componente de editor
    • Servicio de editor
  3. GrapesJS

    El motor de edición visual, que se ejecuta dentro del contenedor que proporciona tu componente.

    • Lienzo
    • Componentes
    • Bloques
    • Capas
    • Estilos
    • Activos
    • Mandos
  4. Tu backend

    Donde realmente están presentes los datos del proyecto, las subidas y los resultados publicados.

    • Tu API
    • Tu base de datos
    • Almacenamiento de archivos

Angular es el dueño de tu aplicación. GrapesJS alimenta la capa de edición visual.

Nada en la parte superior o inferior lo proporciona el editor. Ese límite es lo que mantiene la integración lo suficientemente superficial como para eliminarla después: el editor nunca se convierte en lo que se construye tu producto.

Lee la guía de integración de Angular
Capacidades

Todo lo que necesitas para construir un editor visual

Ocho subsistemas que vienen con el motor. Cada uno es un API que configuras, no una caja negra que aceptas tal cual.

Arrastrar y soltar

Los usuarios construyen páginas arrastrando componentes al lienzo, reordenándolos y anidándolos donde se lo permitan.

Componentes

Define tipos de componentes reutilizables con su propio traits, reglas sobre qué se puede colocar en ellos y tu propio comportamiento.

Bloques

Proporciona a los usuarios secciones y disposiciones predefinidas en una paleta en lugar de una lista de elementos HTML en bruto.

Gestor de estilos

Permite a los usuarios personalizar la tipografía, el espacio, el color y la disposición mediante paneles de propiedad que elijas y limites.

Edición responsiva

Previsualiza y reestiliza una página por punto de interrupción, usando los anchos de dispositivo que definas en lugar de un conjunto fijo.

Activos

Gestiona imágenes y otros activos del proyecto a través de un gestor de activos que puedas señalar a tu propio almacenamiento.

Plantillas

Guarda las páginas terminadas como puntos de inicio reutilizables para que la siguiente página empiece en algún sitio que no esté vacía.

Exportación

Saca HTML y CSS limpios del editor, o lee el proyecto JSON y renderízalo como prefiera tu aplicación.

Lo que deliberadamente no está en esta lista: alojamiento, un CMS, un modelo de permisos e infraestructura de publicación. Esos pertenecen a tu aplicación, y las secciones siguientes indican cómo se conectan.

Personalización

Crea tu propia experiencia de creador de páginas Angular

Un creador genérico de páginas web rara vez es el producto que alguien quiere. Cada capa del editor puede ser reemplazada por algo que encaje con tu aplicación.

  1. Tu producto
  2. Componentes personalizados
  3. Bloques personalizados
  4. Plantillas personalizadas
  5. Comandos personalizados
  6. UI personalizado

Cada capa reduce el editor a tu modelo de contenido. Para la última, los usuarios están componiendo tu producto — no una página web.

Registra tipos de componentes que reflejen tus propios objetos de dominio, expone solo el traits sobre el que tu backend puede actuar y ponlos en la paleta de bloques dentro de tus propias categorías. Los usuarios luego trabajan con una tabla de precios o una cuadrícula de producto que tu API ya entiende, en lugar de con un margrado arbitrario que tendrás que analizar después.

register-blocks.tsts
// Your content model, not a generic website element.
editor.Components.addType('pricing-table', {
  isComponent: (el) => el.dataset?.gjsType === 'pricing-table',
  model: {
    defaults: {
      tagName: 'section',
      droppable: false,
      traits: ['plan', 'currency', 'billingPeriod'],
    },
  },
});

editor.Blocks.add('pricing-table', {
  label: 'Pricing',
  category: 'Your design system',
  content: { type: 'pricing-table' },
});

Un tipo de componente y el bloque que lo inserta. Los nombres de rasgos se convierten en los campos que lee tu backend.

Bloques y plantillas

Proporciona a los usuarios los bloques de construcción adecuados

La diferencia entre un editor que la gente usa y uno que abandona suele ser lo que hay en la paleta el primer día.

Tus bloques

  • Hero
  • Cuadrícula de características
  • Precios
  • Testimonios
  • FAQ
  • Contacto
  • CTA
  • Pie de página

No hagas que los usuarios empiecen desde un lienzo en blanco.

Crea bloques y plantillas reutilizables que encajen con el sistema de diseño de tu aplicación, para que cada página que crea un usuario ya sea fiel a la marca y ya sea responsiva. GJS.Market incluye conjuntos de bloques y gestores de plantillas que puedes instalar en lugar de crear los primeros cincuenta desde cero.

Explorar bloques y plantillas
Almacenamiento

Guarda proyectos en tu backend Angular

GrapesJS serializa un proyecto a JSON y lo entrega a un adaptador de almacenamiento. Lo que haga ese adaptador es completamente tuyo.

  1. GrapesJS project data
  2. Angular HttpClient
  3. Your API
  4. Your backend
  5. Your database

El editor nunca se comunica con tu base de datos. Llama al adaptador que registraste, y el adaptador llama al API que ya tienes.

storage.tsts
editor.Storage.add('angular-backend', {
  async load() {
    return firstValueFrom(this.http.get(`/api/pages/${this.pageId}`));
  },
  async store(data) {
    return firstValueFrom(this.http.put(`/api/pages/${this.pageId}`, data));
  },
});

grapesjs.init({
  container,
  storageManager: { type: 'angular-backend', autosave: true, stepsBeforeSave: 5 },
});

Un adaptador de almacenamiento personalizado conectado por cable a tu API. Nada aquí es específico de GJS.Market — es el contrato de almacenamiento documentado del editor.

  • Datos del proyecto

    Los componentes, estilos, páginas y recursos se serializan en un documento JSON que puedes almacenar en cualquier columna o colección.

  • Guardado automático

    El gestor de almacenamiento puede guardar tras un número configurable de cambios en lugar de solo con una acción explícita.

  • Almacenamiento remoto

    Registra un adaptador personalizado y enruta la carga y almacena a través del Angular HttpClient, con tus propios interceptores y headers de autenticación.

  • Versión

    Como cada guardado es un documento, guardar el historial es una decisión de backend — el editor no necesita saber que ocurrió.

  • Salida HTML/CSS

    Exporta el marcado renderizado junto con el proyecto JSON cuando tu ruta de entrega necesite una salida estática en lugar de un re-renderizado.

  • Publicación

    Una página publicada es un registro separado con su propio ciclo de vida. Manténlo apartado del borrador al que escribe el editor.

Tú controlas dónde se almacenan los datos del proyecto.

Publicación

Desde la edición visual hasta la producción

La autoría y la publicación son problemas diferentes con distintos modos de fallo. El editor resuelve el primero; el segundo permanece en tu infraestructura, donde ya están tus cachés, permisos y rollbacks.

  1. Crear
  2. Edición
  3. Salvar
  4. Reseña
  5. Publicar
  6. Página en directo

A dónde puede ir la producción publicada

  • CMS

    Escribe el resultado de nuevo en el sistema de contenidos que ya ejecuta tu organización.

  • REST API

    Publica el proyecto o el marcado renderizado en un endpoint que posea la validación y los permisos.

  • Publicación estática

    Renderiza las páginas a archivos en el momento de publicación para que la página en vivo no tenga nada del tiempo de ejecución del editor.

  • Backend personalizado

    Almacena, transforma y sirve la salida por el mismo camino que tu aplicación ya utiliza para servir sus páginas.

  • CDN

    Empuja los activos publicados y el marcado al borde, con la invalidación de caché que controlas tú.

  • Despliegue personalizado

    Activa tu pipeline de build o deploy existente desde la acción de publicación.

GrapesJS se encarga de la autoría. Tu infraestructura puede gestionar la publicación.

Multiinquilino

Crea un creador de páginas Angular multi-inquilino

Un despliegue de tu aplicación Angular, un editor y un mundo separado de páginas para cada cliente en él.

Angular SaaS

  • Org A

    • Páginas
    • Activos
    • Plantillas
  • Org B

    • Páginas
    • Activos
    • Plantillas
  • Org C

    • Páginas
    • Activos
    • Plantillas
  • Proyectos separados por inquilino, resueltos desde el usuario autenticado en lugar de desde un parámetro de ruta.
  • Almacenamiento de activos con alcance de inquilino, por lo que una subida nunca puede aparecer en el gestor de activos de otro cliente.
  • Plantillas que pueden ser globales, por plan o por inquilino, dependiendo de lo que vendas.
  • Roles y permisos aplicados al servidor para cada llamada de carga, almacenamiento y publicación.
  • Marca por inquilino, desde el cromo del editor hasta la paleta de bloques.
  • Publicar objetivos que varían según el inquilino — su dominio, su CDN, su pipeline.

Nada de esto es una función de GrapesJS. El editor no tiene concepto de inquilino: carga el proyecto que se le asigna y almacena el proyecto que se le devuelve. La tenencia es algo que tu aplicación Angular y tu backend implementan — por eso también puede coincidir con el modelo de aislamiento que ya tienes.

Explora el Creador de Páginas SaaS
Marca blanca

Haz tuyo el creador de páginas Angular

Nada en el editor tiene que parecerse al editor. Cada superficie que un usuario toca es configurable, reemplazable o removible.

  • Tu logo en lugar del cromo del editor
  • Tus fichas de color, no un tema de terceros
  • Viñetas personalizadas, o tu propio Angular UI que maneja el editor mediante comandos
  • Solo los bloques que soporta tu producto
  • Plantillas que provienen de tu sistema de diseño
  • Tu vocabulario — secciones, módulos, diseños, lo que ya digan tus usuarios
  • Roles que deciden quién puede editar, quién puede publicar y quién solo comentar
  • Permisos aplicados en el servidor, reflejados en el UI

Convierte un editor visual en una parte nativa de tu producto Angular.

Explora el Constructor de Páginas de marca blanca
Integración

Integrar GrapesJS con Angular

La versión corta, en cuatro pasos. La guía completa — detalles del ciclo de vida, envolventes, detección de cambios sin zona, preocupaciones de producción — está en su propia página y va mucho más allá.

  1. 1

    Instalación

    Añade el editor a tu aplicación. Es un paquete npm sencillo sin un paso de compilación específico de Angular.

  2. 2

    Crear un servicio de edición

    Mantén la instancia del editor en un servicio inyectable para que el componente se mantenga delgado y la instancia sea fácil de compartir, simular y desmontar.

  3. 3

    Inicializar en ngAfterViewInit

    El elemento contenedor debe estar en el DOM antes de crear el editor, porque GrapesJS lo mide inmediatamente.

  4. 4

    Destruye correctamente en ngOnDestroy

    Llama a destruir cuando la ruta quede libre. Sin ella, el editor mantiene sus oyentes DOM y la siguiente navegación filtra una instancia.

npm install grapesjs

Una dependencia. No se requiere ningún envoltorio específico de Angular.

page-builder.service.tsts
import { Injectable, NgZone, inject } from '@angular/core';
import grapesjs, { type Editor } from 'grapesjs';

@Injectable({ providedIn: 'root' })
export class PageBuilderService {
  private readonly zone = inject(NgZone);
  private editor?: Editor;

  create(container: HTMLElement): Editor {
    // GrapesJS binds its own DOM listeners to the canvas. Creating it outside
    // Angular keeps every drag frame from scheduling change detection.
    this.editor = this.zone.runOutsideAngular(() =>
      grapesjs.init({
        container,
        height: '100%',
        fromElement: false,
        storageManager: false,
      })
    );

    return this.editor;
  }

  destroy(): void {
    this.editor?.destroy();
    this.editor = undefined;
  }
}

El servicio posee la instancia y su vida útil; el componente posee únicamente el contenedor.

page-builder.component.tsts
import {
  AfterViewInit,
  Component,
  ElementRef,
  OnDestroy,
  inject,
  viewChild,
} from '@angular/core';
import { PageBuilderService } from './page-builder.service';

@Component({
  selector: 'app-page-builder',
  standalone: true,
  template: '<div #canvas class="builder"></div>',
  styles: '.builder { height: 100vh; }',
})
export class PageBuilderComponent implements AfterViewInit, OnDestroy {
  private readonly builder = inject(PageBuilderService);
  private readonly canvas = viewChild.required<ElementRef<HTMLElement>>('canvas');

  ngAfterViewInit(): void {
    // The container has to be in the DOM first: GrapesJS measures it on init.
    this.builder.create(this.canvas().nativeElement);
  }

  ngOnDestroy(): void {
    // Without this the editor keeps its listeners after the route changes.
    this.builder.destroy();
  }
}

Crea después de que exista la vista, destruye cuando desaparezca. Ese par es la mayor parte de la integración.

¿Necesitas la guía completa de integración de Angular?

Las opciones de envoltorio, la detección de cambios sin zona, las rutas de editor cargadas con pereza, el manejo de activos y la lista de verificación de producción se cubren de principio a fin.

Lee la Guía de Integración Angular
Detección de cambios

Trabajando con detección de cambios en Angular

GrapesJS emite sus propios eventos, y esos eventos no provienen de Angular. Coordinar ambos son unas pocas líneas, pero saltárselas produce los dos fallos que cada integración detecta primero.

  1. Evento GrapesJS
  2. NgZone.run()
  3. Estado Angular
  4. Actualización UI
page-builder.component.tsts
editor.on('storage:end:store', () => {
  // Editor events fire outside Angular because the editor was created there.
  // Re-enter the zone before touching state the template renders.
  this.zone.run(() => this.lastSavedAt.set(new Date()));
});

Reentrando en la zona en el único manejador que actualiza el estado de renderizado.

Crea el editor dentro de runOutsideAngular para que la interacción con canvas no programe la detección de cambios en cada fotograma, y luego vuelve a entrar en la zona en el puñado de gestores de eventos que realmente actualizan el estado que renderiza tu plantilla. En una aplicación sin zona, los mismos manejadores actualizan señales y el envoltorio exterior ya no es necesario.

Más sobre el ciclo de vida y las zonas de Angular
Renderizado en el lado del servidor

Angular, SSR y GrapesJS

GrapesJS necesita un navegador DOM. En Angular, SSR o Angular Universal, eso significa que el editor se crea solo en el navegador — la ruta alrededor de él sigue renderizándose en el servidor con normalidad.

Guarda la inicialización con isPlatformBrowser y regresa antes de tiempo en el servidor. El resto de la ruta permanece sin cambios: los guardianes, resolvers y el marcado circundante mantienen su comportamiento renderizado por el servidor, y solo el contenedor del editor llega vacío.

page-builder.component.tsts
import { PLATFORM_ID, inject } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';

export class PageBuilderComponent implements AfterViewInit {
  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));

  ngAfterViewInit(): void {
    // There is no DOM on the server and GrapesJS needs one, so the editor is
    // created in the browser only. The rest of the route still renders on the
    // server as usual.
    if (!this.isBrowser) return;
    this.builder.create(this.canvas().nativeElement);
  }
}

Todo el ajuste de SSR: una sola comprobación de plataforma antes de crear el editor.

TypeScript y AOT

Angular, TypeScript y AOT

La integración es código Angular normal, que es lo principal que merece la pena mencionar al respecto.

  • Compatible con TypeScript

    El editor envía sus propias definiciones de tipos, por lo que la instancia, su configuración y sus eventos se escriben en el sitio de la llamada.

  • Ciclo de vida Angular

    La creación y el desmontaje dependen de ngAfterViewInit y ngOnDestroy — no hay arranque manual fuera del árbol de componentes.

  • Compatible con AO

    Nada en la integración depende de la compilación de plantillas en tiempo de ejecución, así que la ruta del editor se construye como cualquier otra ruta cargada por pereza.

  • Inicialización solo en navegador

    Cuando SSR está en juego, solo la creación del editor está protegida por el navegador; el resto del componente compila y renderiza normalmente.

Construir vs adoptar

Construye un creador de páginas Angular desde cero frente a GrapesJS

Todas las capacidades que aparecen a continuación deben existir antes de que un editor visual sea utilizable. La única pregunta es cuál de ellas escribes tú mismo.

CapacidadDesde ceroGrapesJS
Lienzo visualConstruirIncluido
Arrastrar y soltarConstruirIncluido
ComponentesConstruirIncluido
BloquesConstruirExtensible
EstiloConstruirIncluido
Edición responsivaConstruirIncluido
ActivosConstruirExtensible
PlantillasConstruirExtensible
AlmacenamientoConstruirExtensible
ExportaciónConstruirExtensible
Integración de AngularConstruirIntegrar

"Extensible" significa que el subsistema existe y tiene un API documentado que apuntas a tu propia implementación — no es que llegue precableado a tu backend. Verificado contra GrapesJS 0.23.6 en 2026-09-03.

Construye tu producto Angular. No reconstruyas el motor de edición visual.

  1. GrapesJS
  2. Angular integration
  3. Blocks
  4. Templates
  5. Forms
  6. Storage
  7. Assets
  8. Export
  9. Publishing

La pila que acaba teniendo un constructor que funciona. GrapesJS cubre la primera capa; el resto es tuyo para montar, instalar o comprar.

Plugins

Extiende tu creador de páginas Angular con plugins

El motor te da la superficie de edición. Todo lo que un producto específico necesita encima — la paleta de bloques, el sistema de plantillas, el texto enriquecido, la persistencia, la salida hacia la producción — es donde entran en juego los plugins GJS.Market. Cada anuncio a continuación es un producto real, con el precio mostrado.

Construye o amplía

Empieza por el editor. Añade lo que necesite tu producto.

Ambas columnas terminan con un constructor en funcionamiento. Difieren en cuánto de él sigues manteniendo en dos años.

GrapesJS proporciona la base de edición visual. Los plugins de GJS.Market te permiten ampliar tu constructor con capacidades adicionales en lugar de construir todas las funciones internamente.

Construye todo tú mismo

  • Más desarrollo antes de la primera versión utilizable
  • Más mantenimiento a medida que los navegadores, Angular y tu sistema de diseño se mueven
  • Más código interno que solo tu equipo entiende
  • Cada subsistema de editor se convierte en algo que estás disponible

Extender con plugins

  1. Instala lo que el producto realmente necesita
  2. Configúralo con tu modelo de contenido
  3. Personaliza las partes que ven tus usuarios
  4. Envia y mantén tu presupuesto en tus propias características
Público

¿Quién crea los constructores de páginas Angular?

Cinco formas recurrentes, y lo que cada una de ellas realmente compra con un editor visual.

Empresas SaaS

Añadir edición visual a un producto cuyos clientes actualmente piden al soporte que cambie una página por ellos.

Agencias

Crea un entorno de edición personalizado por cliente en vez de entregar un CMS que nadie quería.

Plataformas CMS

Añadir edición visual sin pasar un año escribiendo un motor de edición desde cero.

Plataformas de marketing

Deja que los profesionales del marketing creen y cambien páginas sin que un desarrollador esté al tanto de cada titular.

Equipos de Enterprise

Crea flujos de trabajo internos controlados de edición, donde lo que se puede editar es tan importante como lo que se puede construir.

Elige tu camino

Elige el enfoque adecuado para crear páginas

Cuatro formas de lanzar un editor visual. Se solapan, pero parten de diferentes limitaciones — y elegir el incorrecto aparece tarde.

¿Construir lo mismo en otro framework? El argumento es idéntico para React, Next.js y Vue: solo cambia el código del ciclo de vida. Creador de páginas React, Creador de páginas Next.js, Creador de páginas Vue.

Rendimiento

Consideraciones de rendimiento

Un editor es una aplicación pesada y una página publicada no. Tratarlos como un solo paquete es el error que vale la pena evitar al principio.

  1. Carga perezosa del editor

    Los usuarios que nunca abren el constructor nunca deberían descargarlo. Una ruta perezosa mantiene el editor fuera de tu paquete principal.

  2. Evitar re-renderizados innecesarios

    Crea el editor fuera de la zona de Angular y vuelve a introducirlo solo en los manejadores que actualizan el estado renderizado.

  3. Optimizar grandes bibliotecas de activos

    Paginada el gestor de activos con tu API en vez de entregarle varios miles de imágenes a la vez.

  4. Inicializar solo cuando sea necesario

    Crea la instancia cuando el editor realmente se muestra, no cuando el componente que lo rodea se monta.

  5. Mantén el código del editor fuera de las páginas publicadas

    La salida publicada es HTML y CSS. Nada en el editor necesita venir con ella.

El tiempo de ejecución del editor y la página publicada no necesitan tener los mismos requisitos de rendimiento.

Seguridad

Consideraciones de seguridad

Un editor visual acepta contenido creado por los usuarios y lo escribe de nuevo en tu sistema. Cada uno de estos pertenece al lado del servidor de ese exchange.

  1. Autorización en el lado del servidor

    Comprueba en cada carga, almacenamiento y publicación si este usuario puede actuar en este proyecto.

  2. Aislamiento de inquilinos

    Resuelve el tenant desde la sesión, nunca desde un parámetro que el cliente pueda cambiar.

  3. Validación de subida

    Validar el tipo y tamaño del lado del servidor, y servir las subidas desde un origen que no pueda ejecutarlas.

  4. Autenticación API

    El adaptador de almacenamiento se ejecuta en el navegador. Sus endpoints necesitan la misma autenticación que el resto de tu API.

  5. Sanitización de contenidos

    Cuando los editores pueden incrustar código personalizado, limpia el servidor antes de que ese marcado se sirva a nadie más.

  6. Puntos finales de publicación protegidos

    La publicación cambia lo que ve el público. Limita la tarifa, regístrala y ponla bajo su propio permiso.

  7. Comprobaciones de permisos en el lado del servidor

    Ocultar un botón cambia el UI, no el API. Cada regla que implica el UI también debe existir detrás de él.

Nunca confíes solo en permisos del lado del cliente.

Servicios

¿Necesitas ayuda para crear tu creador de páginas Angular?

¿Necesitas ayuda para integrar, extender o personalizar GrapesJS dentro de tu aplicación Angular? Nuestro equipo puede ayudarte con la integración, plugins personalizados, personalización de UI e implementación en producción.

  • Integración con Angular y arquitectura de editor
  • Componentes personalizados, bloques y plugins
  • Personalización de UI y etiquetado blanco
  • Almacenamiento, publicación y despliegue de producción
Explorar servicios
FAQ

Preguntas sobre el creador de páginas Angular

¿Qué es un creador de páginas Angular?

Un editor visual dentro de una aplicación Angular que permite a los usuarios ensamblar páginas arrastrando componentes a un lienzo en lugar de escribir marcado. La app Angular se encarga del enrutamiento, la autenticación y los datos; el editor es el responsable de la superficie de edición.

¿Puedo usar GrapesJS con Angular?

Sí. GrapesJS es independiente del framework: se renderiza en un elemento contenedor que le asignas, así que funciona dentro de un componente Angular como cualquier otra biblioteca basada en DOM.

¿GrapesJS es un creador de páginas Angular?

No — es el motor de edición visual sobre el que se basa un creador de páginas Angular. No hay un envoltorio oficial de Angular; integras directamente la biblioteca central, que es un componente y un servicio.

¿Cómo integro GrapesJS con Angular?

Instala el paquete, mantén la instancia en un servicio inyectable, créala en ngAfterViewInit una vez que el contenedor esté en DOM y destrúyela en ngOnDestroy. La guía completa cubre los envoltorios, zonas y preocupaciones de producción.

¿Puedo crear bloques personalizados?

Sí. Los bloques se registran a través del gestor de bloques con tu propia etiqueta, categoría y contenido, por lo que la paleta solo puede contener secciones que soporte tu producto.

¿Puedo crear componentes personalizados?

Sí. Los tipos de componentes se registran con su propio traits, reglas de drop y comportamiento, que es como el editor se reduce desde el HTML genérico hasta tu modelo de contenido.

¿Puedo crear plantillas reutilizables?

Sí. Un proyecto guardado puede recargarse como punto de partida para una nueva página. Las librerías y gestores de plantillas también están disponibles como plugins si prefieres no construir el UI.

¿Puedo guardar proyectos en mi backend Angular?

Sí. Registra un adaptador de almacenamiento personalizado cuyos métodos de carga y almacenamiento llamen a tu API a HttpClient, para que tus interceptores, cabeceras de autenticación y gestión de errores se apliquen como siempre.

¿Puedo usar mi propia base de datos?

Sí. El editor produce un documento JSON y nunca se comunica con una base de datos en sí, así que dónde se almacena ese documento es totalmente una decisión de backend.

¿Puedo crear un creador de páginas de aterrizaje con Angular?

Sí, y es uno de los usos más comunes: una paleta de bloques restringida, plantillas fieles a la marca y una acción de publicación que escribe en el lugar desde donde se sirven tus páginas de marketing.

¿Puedo construir un editor Angular CMS?

Sí. El editor sustituye la pantalla de edición basada en formularios; tu CMS mantiene la propiedad de los tipos de contenido, el flujo de trabajo y los permisos.

¿Puedo construir un constructor de formularios con Angular?

Sí. Registra tus propios componentes de campo como tipos de componentes con traits para validación y nombre, así lo que los usuarios ensamblan se corresponde a un esquema que tu backend entienda.

¿Puedo crear un constructor de páginas Angular multi-inquilino?

Sí, pero la tenencia es el trabajo de tu aplicación. El editor no tiene concepto de inquilino: tu backend resuelve qué proyectos, recursos y plantillas puede ver el usuario actual.

¿Puedo crear un constructor de Angular de marca blanca?

Sí. Los paneles, iconos, colores, categorías de bloques y terminología son configurables, y puedes controlar el editor desde tu propio Angular UI mediante su comando API.

¿Funciona GrapesJS con Angular SSR?

La ruta circundante se renderiza en el servidor con normalidad; el editor en sí se crea solo en el navegador. Inicializa con isPlatformBrowser y regresa antes en el servidor.

¿Cómo funciona GrapesJS con NgZone de Angular?

Crea el editor dentro de runOutsideAngular para que la interacción con canvas no active la detección de cambios constantemente, y luego usa NgZone.run dentro de los pocos gestores de eventos que actualizan el estado que renderiza tu plantilla.

¿Puedo usar TypeScript?

Sí. GrapesJS incluye sus propias definiciones de tipos, así que la instancia del editor, su objeto de configuración y sus eventos se escriben en una base de código Angular TypeScript ordinaria.

¿Puedo ampliar el constructor con plugins?

Sí. Los plugins son funciones que reciben el editor y registran componentes, bloques, comandos o paneles. GJS.Market lista plugins gratuitos y comerciales para bloques, texto enriquecido, almacenamiento, recursos y exportación.

Empieza

Construye tu creador de páginas Angular sin empezar de cero

Usa Angular para tu aplicación y GrapesJS para la experiencia de edición visual. Añade tus propios componentes, bloques, plantillas, flujo de trabajo de almacenamiento y publicación — y luego amplía el generador con plugins GJS.Market cuando necesites más.

Comienzo

Empieza

Instala el editor, móntalo en un contenedor dentro de un componente Angular y esta tarde ten algo en pantalla.

Empieza
Ampliación

Explorar plugins

Bloques, plantillas, texto enriquecido, almacenamiento y exportación — instala las capacidades que tu producto necesita en lugar de escribirlas.

Explorar plugins
Integrar

Ver Guía Angular

Ciclo de vida, zonas, SSR, envoltorios y la lista de verificación de producción, cubiertos de principio a fin en la página de integración.

Ver Guía Angular

Tu app Angular. Tu editor. Tu producto.