PageKit — der selbst gehostete GrapesJS-Website-Builder, als Quellcode. Early Access sichern

Headless-CMS-Editor

Headless CMS Visual Editor mit GrapesJS

Füge deinem Headless CMS einen visuellen Drag-and-Drop-Editor hinzu, ohne deine bestehende Content-API, dein Frontend oder deine Infrastruktur anzufassen.

Visuelles Drag & DropIndividuelle KomponentenWiederverwendbare BlöckeREST & GraphQLDein CMSDein FrontendDeine Daten
Eine visuelle Bearbeitungsebene über einem bestehenden Content API: die Komponentenbibliothek links, die Seite auf der Canvas, die Eigenschaften der ausgewählten Komponenten rechts.
Sieh es in Aktion

Das ist die Bearbeitungsfläche, die du hinzufügst

Der Bildschirm oben ist ein Mock-up des Arrangements, in CSS gezeichnet, sodass es die Seite nichts kostet. Die dahinterstehende Editor-Engine ist real und öffentlich: Öffne die offizielle GrapesJS-Demo, ziehe einen Abschnitt auf die Canvas, und du siehst auf dieselben Canvas-, Komponentenbaum- und Stilkontrollen, die dein Content-Team auf deinem eigenen CMS bekommen würde.

Probier den Editor aus

Die Demo läuft auf grapesjs.com mit Browserspeicher. Nichts darauf berührt deine Inhalte.

Der Wert

Geben Sie Ihrem Headless CMS eine visuelle Bearbeitungserfahrung

Ein Headless CMS gibt deiner Anwendung eine API-erste Inhaltsgrundlage. Was es den Autoren des Inhalts nicht immer bietet, ist eine Möglichkeit, die Seite beim Erstellen zu sehen.

Strukturierte Felder eignen sich hervorragend für einen Artikel, einen Produktbericht oder ein Einstellungsdokument. Sie passen schlecht zu einer Seite, deren Bedeutung ihr Layout ist – eine Kampagnenseite, eine Feature-Tour, ein Preisvergleich. Für diese Fragen fragen die Verantwortlichen meist nach derselben Shortlist:

Was Redakteure verlangen

  • Eine visuelle Canvas
  • Drag & Drop
  • Wiederverwendbare Seitenabschnitte
  • Responsive Bearbeitung
  • Vorlagen
  • Komponentenkonfiguration
  • Live-Vorschau

GrapesJS bietet diese visuelle Bearbeitungsebene, ohne dass du dein CMS ersetzen musst.

Die Lücke

Headless CMS liefert dir Inhalte. Deine Nutzer brauchen trotzdem einen Editor.

Eine headless-Architektur trennt Inhalte von der Präsentation, genau deshalb bleibt eine Bearbeitungslücke: CMS kennt die Felder, das Frontend kennt das Rendering, und nichts dazwischen kennt die Seite. Das Hinzufügen einer visuellen Bearbeitungsschicht schließt diese Lücke, ohne eine Seite zu entprangern.

Traditionelles Headless CMS

  • CMS
  • Strukturierte Inhalte
  • API
  • Frontend

Fehlt

  • Visuelle Bearbeitung
  • Drag & Drop
  • Seitenzusammensetzung
  • Responsives Design

Headless CMS + GrapesJS

  • CMS
  • Strukturierte Inhalte
  • GrapesJS visueller Editor
  • API
  • Frontend
Derselbe Stapel, mit einer zusätzlichen Ebene. Nichts darüber oder darunter ändert sich.

Fügen Sie visuelle Bearbeitung hinzu, ohne auf die Headless-Architektur zu verzichten.

Arbeitsteilung

Warum einen visuellen Editor zu einem headless CMS hinzufügen?

Denn jede der drei Ebenen ist gut in etwas, das die anderen beiden nicht können, und eine visuelle Bearbeitungsebene ist die einzige, die niemand für dich ausliefert. Hier ist, wer was besitzt, sobald der Editor installiert ist.

  • Dein Headless CMS

    Die Inhaltsinfrastruktur, die du bereits betreibst.

    • Inhalt
    • Strukturierte Daten
    • Medien
    • Nutzer
    • Veröffentlichung
    • APIs
  • GrapesJS

    Die visuelle Bearbeitungsebene, die du hinzufügst.

    • Visuelle Canvas
    • Drag & Drop
    • Komponenten
    • Blöcke
    • Styling
    • Responsive Bearbeitung
    • Visuelle Seitenkomposition
  • Dein Frontend

    Unverändert. Es behält alles, was es vorher besessen hat.

    • Rendering
    • Routing
    • Anwendungslogik
    • Nutzererfahrung
    • Deployment

Behalten Sie die Architektur bei. Verbessern Sie das Bearbeitungserlebnis.

Architektur

Wie ein headless CMS-Visual-Editor funktioniert

Vier Ebenen, in der Reihenfolge, in der ein Speicherstand durchläuft. Der Editor kommuniziert nie mit deiner Datenbank und rendert nie deine Produktionsseiten – er liest und schreibt ein Dokument über einen von dir kontrollierten Endpunkt.
  1. GrapesJS

    Das visuelle Bearbeitungserlebnis: Canvas, Komponentenbaum, Blöcke, Stilsteuerungen, Gerätebreiten.

  2. REST / GraphQL

    Persistenz über REST, GraphQL oder Ihr eigenes API. Ein Speicheradapter besteht aus zwei Funktionen – eine, die lädt, eine, die speichert.

  3. Headless CMS

    Deine bestehende Inhaltsinfrastruktur. Sie behält das Schema, die Medienbibliothek, die Nutzer und die bereits vorhandenen Veröffentlichungsregeln.

  4. Content API

    Die Delivery-API, von dem deine Frontends bereits gelesen haben. Einen Editor hinzuzufügen fügt einen Autor hinzu, nicht eine zweite Inhaltsquelle.

  5. Auslieferung

    Jedes Frontend, das dein CMS API verbraucht.

    • Next.js
    • Nuxt
    • React Native

Eine Inhaltsquelle. Mehrere Frontends.

Sehen Sie, wie der Editor in eine Anwendung eingebettet wird
Keine Migration

Du musst dein CMS nicht ersetzen

Die Bearbeitungsschicht wird über dasselbe API angehängt, das Ihr Frontend bereits aufruft. Egal, ob Sie Strapi, Contentful, Sanity, Directus, Hygraph, Prismic, Payload oder ein eigenes Team geschriebenes CMS ausführen, der Integrationspunkt ist ein Paar von Endpunkten, die ein Dokument laden und speichern.

Diese Plattformen lassen sich über ihre APIs integrieren; wie genau, hängt vom Inhaltsmodell und der API des jeweiligen CMS ab. GJS.Market veröffentlicht für die meisten davon keine offizielle Integration, und diese Seite behauptet auch nichts anderes.

Behalte dein CMS. Behalte dein Frontend. Füge einen besseren visuellen Editor hinzu.

Kompatibilität

Funktioniert mit dem CMS, den du bereits verwendest,

Die untenstehenden Karten beschreiben die Integrationsfläche, die jede Plattform bietet, nicht einen Supportanspruch. Eine davon hat ein Community-Speicher-Plugin im GJS.Market-Katalog; die übrigen sind Integrationen, die du oder ein Implementierungspartner gegen deren veröffentlichtes API bauen würden.

  • Strapi

    REST · GraphQL

    Selbstgehostet, mit Inhaltstypen, die du selbst definierst. Das Editor-Dokument wird in der Regel zu einem JSON-Feld auf einem Seitensammlungstyp.

  • Contentful

    REST · GraphQL

    Getrennte Liefer- und Management-APIs. Der Editor schreibt über das Management-API; dein Frontend liest weiterhin das Liefer-API.

  • Sanity

    GROQ · GraphQL

    Portable Text und einen Dokumentspeicher. Das Editor-Dokument liegt neben deinen bestehenden Feldern, anstatt sie zu ersetzen.

  • Directus

    REST · GraphQL

    Die einzige Plattform auf dieser Liste mit einem bereits auf GJS.Market veröffentlichten Community-Speicher-Plugin.

    Das Plugin anzeigen
  • Hygraph

    GraphQL

    GraphQL-first, also ist der Adapter eine Abfrage und eine Mutation statt zwei URLs.

  • Prismic

    REST

    Slice-basierte Inhalte. Editor-Blöcke werden sauber auf Slices abgeordnet, wenn du die Block-Menge darauf ausrichtest.

  • Payload

    REST · GraphQL

    Code-definierte Sammlungen, sodass das Feld, in das der Editor schreibt, im selben Repository wie der Editor deklariert ist.

  • Eigenes CMS

    REST · GraphQL · Custom

    Alles, was eine Ladeanforderung beantworten und eine Speicheranfrage akzeptieren kann. Zwei Endpunkte sind der gesamte Vertrag.

Der einzige CMS-benannte Adapter im Katalog

Directus Storage ist ein kostenloses, von der Community veröffentlichtes GrapesJS-Speicher-Plugin, das aus dem Silex-Projekt stammt. Es ist eine wirklich brauchbare Referenz dafür, wie ein Adapter aufgebaut ist – Authentifizierungsbefehle, Laden, Speichern –, aber im eigenen Eintrag steht, dass es auf ein älteres Directus SDK zielt. Behandle es also als Ausgangspunkt zum Nachlesen, nicht als unterstütztes Produkt zum Einbauen.

Directus Storage
Inhaltsmodell

Dein CMS. Dein Inhaltsmodell.

Ein visueller Editor ist nur in einem headless Setup nützlich, wenn das, was er erzeugt, noch dem von dir entworfenen Schema entspricht. In GrapesJS deklariert ein benutzerdefinierter Komponententyp sein eigenes editierbares traits – und in diese traits gehören dein CMS-Feldnamen.

  1. GrapesJS-Komponente
  2. Visueller Block
  3. Dein Inhaltsschema
  4. CMS

Ausgearbeitetes Beispiel

hero-section

FeldTyp
  • titleString
  • subtitleText
  • imageMedien
  • buttonObjekt
  • metadataJSON
Ein Komponententyp, das traits, das ein Editor sieht, und die Felder, die dein CMS-Eintrag bereits deklariert – absichtlich dieselben Namen.
Deklaration derselben Felder auf der Komponentejavascript
editor.DomComponents.addType('hero-section', {
  model: {
    defaults: {
      // Traits become the fields your CMS entry already has.
      traits: [
        { name: 'title',    label: 'Title' },
        { name: 'subtitle', label: 'Subtitle' },
        { name: 'image',    type: 'image' },
        { name: 'ctaHref',  label: 'Button link' },
      ],
    },
  },
});

Der visuelle Editor sollte sich an dein Inhaltsmodell anpassen – und nicht dein CMS dazu zwingen, sich an den Editor anzupassen.

Speicherformat

Was solltest du speichern?

Zwei Darstellungen stammen aus demselben Editor und beantworten unterschiedliche Fragen. Eine kann zum Bearbeiten wieder geöffnet werden; die andere kann gerendert werden. Die meisten Produktionseinrichtungen behalten beide in verschiedenen Spalten, und das ist eine Designentscheidung und keine Regel.

  • Das Projektdokument

    1. Projekt-/Komponentendaten
    2. Editierbare Quelle
    3. Später öffnen
    editor.getProjectData()

    Der Komponentenbaum, Stile, Seiten und Assets sind strukturierte Daten. Es ist das, was der Editor braucht, um die Sitzung genau so zu rekonstruieren, wie sie gelassen wurde, was die einzige Darstellung ist, die eine zweite Bearbeitungsrunde intakt übersteht.

    Verwenden Sie es, wenn: Jemand wird diese Seite im Editor wieder öffnen.

  • Das gerenderte Markup

    1. HTML + CSS
    2. Gerenderte Ausgabe
    3. Vorschau / Veröffentlichung
    editor.getHtml() + editor.getCss()

    Markup und Stylesheet werden aus demselben Baum generiert. Das ist das, was eine Vorschau-iframe, ein statischer Export oder eine Veröffentlichungspipeline verbraucht, und es ist nicht zuverlässig als Bearbeitungssitzung wieder importierbar.

    Verwenden Sie es, wenn: etwas nachgeschaltet muss es ohne den Editor rendern.

Speichere die Repräsentation, die dein Editor für zukünftige Bearbeitungen benötigt, und generiere die Ausgabe, die dein Frontend oder deine Veröffentlichungspipeline benötigt.

Editor-Funktionen

Alles, was deine Redakteure brauchen

Was mit der Engine kommt, was ein Plugin hinzufügt und was bleibt die Aufgabe deiner Anwendung. Der Unterschied ist wichtig, wenn du die Arbeit abgrenzst, statt eine Feature-Liste zu lesen.

  • Drag & DropGrapesJS-Kern
  • KomponentenGrapesJS-Kern
  • BlöckeGrapesJS-Kern
  • Style ManagerGrapesJS-Kern
  • Responsive BearbeitungGrapesJS-Kern
  • EbenenGrapesJS-Kern
  • AssetsPlugin
  • VorlagenPlugin
  • VorschauDeine Anwendung
Bereitgestellt vonDeine AnwendungGrapesJS-KernPlugin

GrapesJS wird ohne CMS, ohne Hosting, ohne Benutzerkonten und ohne Berechtigungsmodell ausgeliefert. Diese bleiben bei deinem CMS und deiner Anwendung.

Auswahl pro Inhaltstyp

CMS-Editor oder Seiten-Builder?

Das ist keine Entscheidung, die man einmal für das gesamte Produkt trifft. Es ist eine Entscheidung, die man pro Inhaltstyp trifft, und die meisten Teams nutzen am Ende beides.

  • Strukturierter Inhaltseditor

    Die eigene formularbasierte Bearbeitung deines CMS, gesteuert vom Schema.

    Am besten für

    • Artikel
    • Text
    • Strukturierte Felder
    • Einfacher Inhalt
  • Visueller Seiten-Builder

    Eine Canvas, bei der die Anordnung der Inhalt ist.

    Am besten für

    • Landingpages
    • Marketingseiten
    • Benutzerdefinierte Layouts
    • Visuelle Websites
    • Komplexe Seitenkomposition

Verwende strukturierte Felder, wo Struktur wichtig ist. Nutze visuelle Bearbeitung, wo Layout und Komposition wichtig sind.

Arbeitsablauf

Vorschau der Inhalte vor der Veröffentlichung

Bearbeiten und Veröffentlichen sind getrennte Ereignisse, und ein headless Setup macht das leicht durchzusetzen: Das Entwurfsdokument und das veröffentlichte Dokument sind unterschiedliche Zeilen, die von unterschiedlichen Token gelesen werden.

  1. 1

    CMS-Entwurf

    Der Eintrag existiert in deinem CMS mit Draft-Status.

  2. 2

    GrapesJS-Editor

    Jemand schreibt die Seite auf der Canvas.

  3. 3

    Vorschau

    Dein Frontend rendert den Entwurf bei jeder Gerätebreite.

  4. 4

    Prüfung

    Eine zweite Person liest die Seite, da Besucher sie sehen werden.

  5. 5

    Genehmigen

    Die Genehmigung wird von deiner Anwendung erfasst, nicht vom Editor.

  6. 6

    Veröffentlichen

    Dein CMS bewirbt den Draft und dein Frontend validiert erneut.

Manuelle Freigabe

Was ein Rezensent wechseln sollte können

  • Desktop
  • Tablet
  • Mobil
  • Entwurf
  • Veröffentlicht

Trenne das Bearbeiten vom Veröffentlichen.

Multikanal

Erschaffe einmal. Liefer überall ab.

Das ist der Vorteil, den du dir bereits gekauft hast, als du ein Headless CMS gewählt hast, und ein visueller Editor verbraucht ihn nicht – solange das, was der Editor schreibt, im Content API bleibt und nicht in einer Vorlage.

Headless CMS

Ein Content API, gelesen von jedem Kanal

  • Seiten
  • Blöcke
  • Assets
  • Webseite

    Next.js

  • Mobil

    React Native

  • Anwendung

    Nuxt

Jeder Kanal interpretiert dieselbe Nutzdaten mit seinem eigenen Renderer.

Eine headless-Architektur ermöglicht es, dass dieselbe Inhaltsinfrastruktur verschiedene Frontends bedient.

Multi-Tenant

Baue einen multi-tenant headless CMS-Editor

Wenn der Editor Teil eines Produkts und kein internes Werkzeug ist, benötigt jede Kundenorganisation eigene Seiten, Assets und Vorlagen – und darf niemals die von jemand anderem sehen.

Deine Anwendung

Die Aufteilung wird hier auf dem Server durchgesetzt

  • Organisation A

    • Seiten
    • Assets
    • Vorlagen
    • Berechtigungen
  • Organisation B

    • Seiten
    • Assets
    • Vorlagen
    • Berechtigungen
  • Organisation C

    • Seiten
    • Assets
    • Vorlagen
    • Berechtigungen
Ein Editor, ein Content API, separate Daten pro Organisation.

GrapesJS bringt keine eigene Mandantenfähigkeit mit. Mandantenisolation, Branding pro Mandant und Veröffentlichungsregeln liegen bei deiner Anwendung, und jeder Speicheraufruf muss serverseitig eingegrenzt werden.

White-Label

Besitze die gesamte Bearbeitungserfahrung

Wenn Ihre Kunden den Editor nutzen, sollte er wie Teil Ihres Produkts aussehen. Die Panels, das Icon-Set, die Blockbibliothek und die Vorlagen sind alle konfigurierbar, und die umliegende Anwendung liefert alles, was der Editor nicht tut.

  • Eigenes Logo
  • Eigene Farben
  • Eigene Oberfläche
  • Benutzerdefinierte Blöcke
  • Benutzerdefinierte Vorlagen
  • Rollen
  • Berechtigungen

Rollen und Berechtigungen stehen auf dieser Liste, weil ein gebrandeter Editor sie braucht – nicht weil der Editor sie bereitstellt. Sie werden von deinem Backend durchgesetzt.

Ökosystem

Baue deinen headless CMS-Editor-Stack zusammen

Die Engine ist eine Sprosse des Stacks. Unten ist die ganze Leiter, mit einem ehrlichen Etikett auf jeder Sprosse: Was in GrapesJS selbst ausgeliefert wird, was du auf GJS.Market kaufen oder herunterladen kannst und was bleibt dein eigenes Werk.

  1. GrapesJS-KernOpen Source
  2. CMS-IntegrationDeine Arbeit
  3. BlöckeGJS.Market
  4. VorlagenGJS.Market
  5. AssetsGJS.Market
  6. SpeicherGJS.Market
  7. FormulareGJS.Market
  8. SEOGJS.Market
  9. ExportGJS.Market
  10. VeröffentlichungGJS.Market
  11. Berechtigungen & AuditDeine Arbeit

Zwei Sprossen sind absichtlich als eigene Arbeit markiert. Die CMS-Integration ist spezifisch für dein Inhaltsmodell, und der Katalog hat keine Berechtigungen oder Audit-Log-Plugin – ein Implementierungspartner kann beides bauen, aber kein Produkt hier tut das.

Echte Angebote

Plugins, die für ein headless Setup wichtig sind

Jede untenstehende Präsentation wurde mit dem Live-Katalog abgeglichen und ist veröffentlicht und kaufbar. Die Preise werden beim Bau vom Marktplatz abgelesen, also sieht man das, was man heute sieht.

Nach Anwendungsfall

Wählen Sie den richtigen Plugin-Stack

Fünf Startsets, die aus denselben verifizierten Angeboten stammen. Keines davon ist ein Bundle, das man mit einem Klick kauft – es sind die Kombinationen, die für jede Produktart immer wieder auftauchen.

Die Preise stammen aus dem Live-Katalog zum Bauzeitpunkt. Kostenlose Angebote werden markiert.

Build vs. Extend

Baue nicht jede CMS-Funktion selbst

Jede Fähigkeit auf der oben genannten Leiter ist baubar. Die Frage ist, welche sich die Zeit deines Teams wert sind, wenn es bereits eine gepflegte Erweiterung gibt.

Alles selbst bauenErweiterung mit Plugins
Weitere EntwicklungSchnellere Implementierung
Mehr WartungWiederverwendbare Erweiterungen
Baue jedes FeatureFüge nur das hinzu, was du brauchst
Interne WerkzeugeFertige Lösungen

Beginnen Sie mit dem visuellen Editor. Fügen Sie Funktionen hinzu, während Ihr Produkt wächst.

Selbst bauen vs. übernehmen

Baue einen Headless CMS-Editor von Grund auf statt GrapesJS

Kein Anbieter-Vergleich – ein Scope-Vergleich. Jede Zeile ist ein Subsystem, das ein visueller Editor benötigt, und die einzige Frage ist, ob dein Team es schreibt.

FunktionVon Grund aufGrapesJS
CanvasSelbst bauenEnthalten
Drag & DropSelbst bauenEnthalten
KomponentenSelbst bauenEnthalten
BlöckeSelbst bauenErweiterbar
StylingSelbst bauenEnthalten
Responsive BearbeitungSelbst bauenEnthalten
EbenenSelbst bauenEnthalten
AssetsSelbst bauenErweiterbar
VorlagenSelbst bauenErweiterbar
SpeicherSelbst bauenErweiterbar
ExportSelbst bauenErweiterbar

"Erweiterbar" bedeutet, dass das Subsystem existiert und einen Erweiterungspunkt besitzt – der Block-Set, die Template-Bibliothek, das Asset-Backend, das Speicherziel und das Exportformat stehen Ihnen zur Verfügung, sei es aus dem Katalog oder Ihrem eigenen Code. Katalogbehauptungen haben 2026-09-03 verifiziert.

Baue dein CMS-Produkt. Baue die visuelle Editor-Engine nicht neu auf.

Einwand

Warum benutzt ich nicht einfach den eingebauten Editor meines CMS?

Oft solltest du das tun. Ein eingebauter Editor ist bereits integriert, bereits berechtigt und bereits vertraut, und für strukturierte Inhalte ist er meist die richtige Lösung. Eine dedizierte visuelle Bearbeitungsebene verdient ihren Platz, wenn du Dinge brauchst, für die der integrierte Editor nicht gebaut wurde:

  • Reichhaltigere visuelle Bearbeitung auf der Seite selbst
  • Individuelle Blöcke, die zu deinem Designsystem passen
  • responsive Layouts wurden bei jeder Gerätebreite überprüft
  • Benutzerdefinierte Komponenten, die an deine eigenen Inhaltstypen gebunden sind
  • Tiefere Integration mit dem Rest Ihres Produkts
  • Eine White-Label-Oberfläche, die Ihre Kunden nutzen können
  • Individuelle Überprüfungs- und Veröffentlichungsworkflows
  • Unabhängigkeit von einem einzigen Frontend

Dies ist keine Behauptung, dass eingebaute Editoren minderwertig seien. Es ist die Behauptung, dass die Bearbeitungsfläche und die Inhaltsinfrastruktur trennbare Entscheidungen sind.

Behalte dein CMS. Wähle deine eigene Bearbeitungserfahrung.

Implementierung

Wie man einen headless CMS Visual Editor baut

  1. 1
    Schritt 1

    Definieren Sie Ihr Inhaltsmodell

    Entscheide, was der Editor erstellen darf und in welche bestehenden Inhaltstypen er schreibt. Diese Entscheidung beschränkt alle folgenden Typen, also triff sie, bevor irgendein Editor-Code geschrieben wird.

  2. 2
    Schritt 2

    GrapesJS konfigurieren

    Richte die Komponententypen, die Blockbibliothek und die Stilkontrollen ein, die deine Editoren bekommen – und genauso wichtig, die, die sie nicht erhalten.

  3. 3
    Schritt 3

    Speicher anbinden

    Speichere das Projektdokument über REST, GraphQL oder dein eigenes API, wobei die Authentifizierung von der Sitzung übernommen wird, die dein CMS bereits ausführt.

  4. 4
    Schritt 4

    Build-Vorschau

    Rendere den Entwurf mit deinem echten Frontend, auf einer Route, die nur ein authentifizierter Prüfer erreichen kann. Alles andere ist eine Vorschau einer anderen Seite.

  5. 5
    Schritt 5

    Veröffentlichung hinzufügen

    Verknüpfe Entwurf-, Prüf- und Produktionszustände mit dem Workflow, den dein CMS bereits hat, und notiere in deiner Anwendung, wer was genehmigt hat.

Schneller Start

Fang an zu bauen

Der kleinste Editor, der mit einem Content API kommuniziert. Zwei Endpunkte, eine autosave-Richtlinie und die zwei Aufrufe, die jeweils eine Darstellung bieten.

npm install grapesjs
Initialisiere den Editor gegen dein APIjavascript
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';

const editor = grapesjs.init({
  container: '#editor',
  height: '100vh',
  // Load and save the project through your CMS API. Both endpoints are
  // yours: GrapesJS only decides when to call them.
  storageManager: {
    type: 'remote',
    autosave: true,
    stepsBeforeSave: 10,
    options: {
      remote: {
        urlLoad: '/api/cms/pages/home',
        urlStore: '/api/cms/pages/home',
        // Send the session the CMS already issued — never a CMS admin token
        // that reached the browser.
        fetchOptions: (opts) => ({ ...opts, credentials: 'include' }),
      },
    },
  },
});

// The two representations, whenever you need them.
const project = editor.getProjectData();          // re-openable source
const output = { html: editor.getHtml(), css: editor.getCss() };

Schicke die Sitzung mit, die dein CMS ohnehin ausgestellt hat. Ein CMS-Admin-Token, das den Browser erreicht, ist ein CMS-Admin-Token, das deine Besucher haben.

Transport

Verbinde jede API

GrapesJS ist egal, ob das andere Ende REST, GraphQL oder etwas von deinem Team ist. Ein Speicheradapter ist eine Last- und eine Speicherfunktion, und alles darunter ist eine Entscheidung, die du darin triffst.

  1. GrapesJS
  2. Speicheradapter
  3. REST / GraphQL
  4. Headless CMS

Was der Adapter abdecken muss

  • Projekt laden

    Holen Sie das gespeicherte Dokument auf einer Seite ab und geben Sie es beim Start an den Editor.

  • Projekt speichern

    Schreib es zurück, idealerweise als Aktualisierung eines Entwurfs statt des veröffentlichten Eintrags.

  • Autosave

    Spare bei einer Änderungszahl oder einem Timer und sorge dafür, dass der Endpunkt häufig aufgerufen wird.

  • Assets

    Laden Sie über Ihre Medienpipeline hoch und geben Sie die URL zurück, die der Asset Manager anzeigen sollte.

  • Vorschau

    Zeigen Sie den Entwurf Ihrem Frontend hinter einem Token und niemandem sonst.

  • Veröffentlichen

    Ein separater, autorisierter Endpunkt. Nie derselbe Anruf wie ein Speichermodus.

Derselbe Adapter, gegen GraphQLjavascript
// A storage adapter is just two functions, so GraphQL needs no extra plugin.
editor.Storage.add('cms', {
  async load() {
    const res = await gql(`query Page($id: ID!) { page(id: $id) { project } }`);
    return res.page.project;
  },
  async store(data) {
    await gql(`mutation Save($id: ID!, $project: JSON!) {
      updatePage(id: $id, data: { project: $project }) { id }
    }`, { project: data });
  },
});

Kein GraphQL-Adapterpaket ist auf GJS.Market veröffentlicht – der obige Ausschnitt zeigt die gesamte Integration, weshalb keine benötigt wird.

Zwei Funktionen sind der gesamte Vertrag zwischen einem visuellen Editor und einer Content-API.

Produktion

Produktionsreifer Headless-CMS-Editor

Die Liste, die ein Team zwischen einem funktionierenden Prototyp und etwas durcharbeitet, das Kunden berühren. Nichts hier ist exotisch; alles wird mindestens einmal übersprungen.

  • Editor

    • Editor-Lebenszyklus: Initialisieren und Löschen sauber bei Routenänderungen
    • Benutzerdefinierte Komponententypen, die vor jedem Projektladen registriert werden
    • Nur die Plugins, die dieser Editor tatsächlich verwendet, sind gebündelt
  • Daten

    • Projektpersistenz wurde gegen einen echten API bewiesen, nicht gegen einen Mock
    • Autosave-Intervall abgestimmt, und ein sichtbarer gespeicherter Zustand
    • Überarbeitungen werden beibehalten, sodass ein schlechter Speicherstand wiederherstellbar ist
  • Inhalt

    • Schema-Validierung auf dem Server, bevor etwas geschrieben wird
    • Inhaltsmodell dokumentiert und versioniert mit den Komponententypen
    • Strukturierte Ausgabe wird beim Veröffentlichen regeneriert, nicht vom Editor zwischengespeichert
  • Sicherheit

    • API-Authentifizierung bei jedem Laden, Speichern und Hochladen
    • Die Autorisierung wurde serverseitig für die jeweilige Seite überprüft
    • Upload-Validierung: Typ, Größe und Ziel
    • Tenant Isolation wird in der Abfrage erzwungen, nicht in der Schnittstelle
  • Arbeitsablauf

    • Entwurfszustand unterscheidet vom veröffentlichten Zustand im CMS
    • Vorschauroute authentifiziert und von der Indexierung ausgeschlossen
    • Überprüfungsschritt aufgezeichnet mit wem und wann
    • Veröffentlichungsendepunkt separat, autorisiert und prüfbar
Sicherheit

Sicherheitsaspekte

Ein visueller Editor ist ein Schreibpfad in Ihre Inhaltsinfrastruktur, also erbt er jede Regel, die dieser Pfad bereits hatte – und fügt Datei-Uploads sowie beliebige Markups auf die Oberfläche hinzu.

  • Autorisierung auf dem Server

    Jedes Laden, Speichern, Hochladen und Veröffentlichen wird mit der Sitzung für diese spezielle Seite auf dem Server abgeglichen.

  • Isoliere Mandant in der Abfrage

    Umfang nach Tenant in der Datenbankabfrage selbst. Ein nach dem Lesen angewendeter Filter ist keine Isolation.

  • Authentifiziere die API

    Der Editor verwendet die Sitzung, die dein CMS ausgegeben hat. Kein Management- oder Admin-Token gehört in den Browsercode.

  • Uploads validieren

    Überprüfe Typ, Größe und Zielperson serverseitig und bereitstelle Benutzermedien von einem separaten Ursprung aus, wo möglich.

  • Inhalte bereinigen

    Redakteure können eigenen Code einfügen. Entscheiden Sie bewusst, wer es darf, und bereinigen Sie, was den Besuchern angezeigt wird.

  • Schütze die Veröffentlichung

    Ein separater Endpunkt mit eigener Berechtigungsprüfung, daher ist das Bearbeiten nicht dasselbe wie das Veröffentlichen.

Verlassen Sie sich niemals nur auf clientseitige Berechtigungen. Das Verstecken eines Panels ist eine Entscheidung der Benutzeroberfläche, keine Sicherheitskontrolle.

Leistung

Leistungsüberlegungen

Die Editor-Laufzeit ist ein Entwicklerwerkzeug und gehört ausschließlich zum Bearbeiten. Fast jedes Leistungsproblem in dieser Architektur entsteht dadurch, dass es in die Seiten einfließt, die Besucher laden.

  • Lade den Editor verzögert

    Importiere es über die Bearbeitungsroute. Nichts an einer besucherorientierten Seite benötigt das Bearbeitungspaket.

  • Große Asset-Bibliotheken paginieren

    Eine Medienbibliothek wächst unbegrenzt. Paginieren und durchsuchen Sie sie serverseitig, anstatt sie komplett zu laden.

  • Bündle nur die Plugins, die du verwendest,

    Jedes Plugin registriert Komponenten, Befehle und Panels beim Start. Ungenutzte Plugins kosten bei jeder Öffnung Zeit.

  • Halten Sie die Laufzeit aus veröffentlichten Seiten heraus

    Veröffentlichte Ausgaben sollten Markup und Stile von deinem Frontend gerendert werden, ohne dass Editor-Code ausgeliefert wird.

  • Cachet API-Antworten absichtlich

    Der Delivery-API kann schwer zwischengespeichert werden; der entwurf, der hinter der Vorschau gelesen wird, kann das meist nicht. Behandle sie getrennt.

Hier werden keine Zeitangaben genannt, da für diese Seite keine gemessen wurden. Missen Sie Ihren eigenen Editor mit Ihrem eigenen Block-Set – die Blockbibliothek und die Asset-Anzahl dominieren die Zahlen.

FAQ

Fragen zum Headless CMS-Editor

Was ist ein headless CMS-Editor?

Es ist die Benutzeroberfläche, die Menschen verwenden, um Inhalte in einem headless CMS zu erstellen – die Ebene, die über dem Content API liegt. In einer headless-Architektur ist die Bearbeitungsoberfläche nicht an das Frontend gebunden, sodass sie der eigene formularbasierte Editor des CMS, ein visueller Editor sein kann, den man hinzufügen kann, oder beides für verschiedene Inhaltstypen.

Was ist ein headless CMS Visual Editor?

Ein visueller Editor ist einer, bei dem die bearbeitende Person die Seite beim Zusammenstellen sieht: ein Canvas, ziehbare Abschnitte, Stil-Steuerungen und Gerätebreiten statt einer Liste von Feldern. Er schreibt weiterhin über die Content-API, die Inhalte bleiben also headless.

Kann ich GrapesJS mit einem Headless CMS verwenden?

Ja. GrapesJS wird über einen Speicheradapter gespeichert – eine Ladefunktion und eine Speicherfunktion, die du auf dein API verweisen kannst. Jeder CMS, der ein Dokument zurückgeben und ein Update akzeptieren kann, kann es sichern.

Kann ich GrapesJS mit Strapi verwenden?

Es gibt keine offizielle Strapi-Integration und kein Strapi-Plugin auf GJS.Market. Der übliche Ansatz ist ein JSON-Feld auf einem Seiteninhaltstyp, wobei der Speicheradapter des Editors Strapi oder GraphQL API über die Sitzung des Anrufers aufruft.

Kann ich GrapesJS mit Contentful verwenden?

Es existiert keine offizielle Integration. Contentful trennt seine Bereitstellung und Verwaltung von APIs, sodass eine Integration durch die Auslieferung liest und über das Management von Ihrem Server schreibt – niemals mit einem im Browser verfügbaren Verwaltungstoken.

Kann ich GrapesJS mit Sanity verwenden?

Es gibt keine offizielle Integration. Der Dokumentenspeicher von Sanity kann das Projektdokument des Editors neben deinen bestehenden Feldern speichern, wobei der Adapter dieses Dokument über Sanity' API liest und patcht.

Kann ich GrapesJS mit Directus verwenden?

Directus ist die einzige Plattform mit einem Community-Speicher-Plugin auf GJS.Market. Es ist kostenlos und als Referenz nützlich, aber im eigenen Eintrag steht, dass es auf ein älteres Directus SDK zielt – rechne also damit, Teile davon zu aktualisieren oder neu zu schreiben.

Kann ich GrapesJS mit Payload verwenden?

Es existiert keine offizielle Integration. Die Sammlungen von Payload sind im Code definiert, sodass das Feld, in das der Editor schreibt, im selben Repository wie der Editor deklariert werden kann, was den Adapter ungewöhnlich kurz macht.

Kann ich einen benutzerdefinierten CMS anschließen?

Ja, und es ist oft der einfachste Fall. Wenn dein Backend eine Ladeanforderung beantworten und eine Speicheranfrage für ein Dokument akzeptieren kann, kann es den Editor unterstützen. Nichts am Editor setzt ein bestimmtes Produkt voraus.

Kann ich REST APIs verwenden?

Ja. Der integrierte Remote-Speicher benötigt eine Lade-URL und eine Store-URL plus deine Abrufoptionen, sodass eine REST-Integration eher Konfiguration als Code sein kann.

Kann ich GraphQL verwenden?

Ja. Registrieren Sie einen benutzerdefinierten Speicheradapter, dessen Last eine Abfrage ausführt und dessen Speicher eine Mutation ausführt. Kein GraphQL-spezifisches Plugin ist erforderlich, und keines wird auf GJS.Market veröffentlicht.

Kann ich GrapesJS-Projekte als JSON speichern?

Ja – das Projektdokument sind strukturierte Daten, und normalerweise befindet sich eine JSON-Spalte oder ein Feld. Das ist die Darstellung, die man notieren muss, falls die Seite im Editor wieder geöffnet wird.

Kann ich HTML und CSS generieren?

Ja. Der Editor stellt das gerenderte Markup und Stylesheet aus demselben Komponentenbaum zur Verfügung, was eine Vorschau-iframe, ein statischer Export oder eine Veröffentlichungspipeline verbraucht.

Sollte ich HTML- oder Projektdaten speichern?

Speichere die Projektdaten, falls die Seite erneut bearbeitet werden soll, da dies die einzige Darstellung ist, die die Sitzung treu rekonstruiert. Generiere das Markup für Rendering und Veröffentlichung. Viele Produktionssetups speichern beides in getrennten Feldern.

Kann ich eigene Blöcke erstellen?

Ja. Blöcke werden über den Blockmanager registriert, und ein Block kann jeden von dir definierten Komponententyp einfügen – einschließlich eines Gebundenen an dein eigenes Inhaltsschema.

Kann ich Blöcke meinem CMS-Schema zuordnen?

Ja. Definiere einen Komponententyp, dessen traits dein CMS-Feldnamen verwendet, und lass dann den Adapter diese traits in einen Eintrag einlesen. Die Namen auf beiden Seiten identisch zu halten, macht das Mapping trivial.

Kann ich einen visuellen Landingpage-Builder bauen?

Ja, und es ist der häufigste erste Anwendungsfall. Eine Kampagnenseite ist der Ort, an dem strukturierte Felder am schwächsten sind und eine Canvas am stärksten.

Kann ich einen Multi-Tenant-CMS-Editor bauen?

Ja, aber die Mandantenfähigkeit gehört deiner Anwendung, nicht dem Editor. GrapesJS kennt keine Mandanten; jeder Speicher- und Asset-Aufruf muss serverseitig eingegrenzt werden.

Kann ich einen SaaS-Seiten-Builder bauen?

Ja. Das bedeutet, Konten, Pläne, Limits und Veröffentlichungen über dem Editor hinzuzufügen – all das liegt in deinem Produkt und nicht in der Bearbeitungs-Engine.

Kann ich einen White-Label-Editor erstellen?

Ja. Panels, Icons, Styling, die Blockbibliothek und die Vorlagen sind alle konfigurierbar, sodass der Editor als Teil deines eigenen Produkts gelesen werden kann.

Kann ich meine eigene Vermögensverwaltung hinzufügen?

Ja. Der Asset-Manager hat einen Upload-Hook, sodass er auf deine Medienpipeline oder CDN verweisen kann. Plugins existieren für gängige gehostete Uploader.

Kann ich Entwurfs- und Veröffentlichungs-Workflows erstellen?

Ja, ich benutze die Zustände, die dein CMS bereits hat. Veröffentliche weiterhin hinter einem separaten, autorisierten Endpunkt, damit das Bearbeiten nicht automatisch Veröffentlichen bedeutet.

Kann ich den Editor mit Plugins erweitern?

Ja. Plugins fügen Komponenten, Blöcke, Befehle, Panels und Speicherziele hinzu. Der GJS.Market-Katalog umfasst Blöcke, Vorlagen, Assets, Speicher, Formulare, SEO, Export und Veröffentlichung; Berechtigungen und Audit-Logging sind nicht abgedeckt und bleiben benutzerdefinierte Arbeiten.

Dienstleistungen

Brauchst du Hilfe beim Aufbau deines headless CMS-Editors?

Brauchst du Hilfe, GrapesJS an Strapi, Contentful, Sanity, Directus, Payload oder ein eigenes CMS anzubinden? Wir helfen bei Editor-Integration, eigenen Komponenten, Speicher, Plugins und den Produktionsabläufen drumherum.

  • Editor-Integration
  • Individuelle Komponenten
  • Speicheradapter
  • Plugin-Konfiguration
  • Produktionsabläufe
Nächster Schritt

Gib deinem Headless CMS das Bearbeitungserlebnis, das es verdient.

Behalte dein bestehendes CMS, dein Inhaltsmodell und deine Frontend-Architektur. Füge GrapesJS als visuelle Bearbeitungsebene hinzu und erweitere es dann mit GJS.Market-Plugins, sobald dein Produkt wächst.

Fang hier an

Baue deinen Headless CMS-Editor

Erzählen Sie uns von CMS, dem Content-Modell und den Seiten, die Ihr Team erstellen muss, und erhalten Sie eine strukturierte Einrichtung zurück.

Leg los
Erweitern

Plugins durchsuchen

Speicher, Blöcke, Vorlagen, Assets, Formulare, SEO, Export und Veröffentlichen – die Sprossen, die du nicht schreiben musst.

Plugins durchsuchen

Dein CMS. Dein Frontend. Dein Editor.