Füge deinem Headless CMS einen visuellen Drag-and-Drop-Editor hinzu, ohne deine bestehende Content-API, dein Frontend oder deine Infrastruktur anzufassen.
Entwurf · automatisch gespeichert in deinem Content API
Eigenschaften
Typografie
Farben
Abstand
Layout
DesktopTabletMobil
Eine visuelle Bearbeitungsebene über einem bestehenden Content API: die Komponentenbibliothek links, die Seite auf der Canvas, die Eigenschaften der ausgewählten Komponenten rechts.
Visueller Headless-CMS-Editor
Content API
Komponenten
Hero
Features
Preise
Erfahrungsberichte
FAQ
Aufruf zum Handeln
Canvas
Webseite
Entwurf · automatisch gespeichert in deinem Content API
Eigenschaften
Typografie
Farben
Abstand
Layout
DesktopTabletMobil
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.
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.
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.
GrapesJS
Das visuelle Bearbeitungserlebnis: Canvas, Komponentenbaum, Blöcke, Stilsteuerungen, Gerätebreiten.
↓
REST / GraphQL
Persistenz über REST, GraphQL oder Ihr eigenes API. Ein Speicheradapter besteht aus zwei Funktionen – eine, die lädt, eine, die speichert.
↓
Headless CMS
Deine bestehende Inhaltsinfrastruktur. Sie behält das Schema, die Medienbibliothek, die Nutzer und die bereits vorhandenen Veröffentlichungsregeln.
↓
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.
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.
ST
Strapi
REST · GraphQL
Selbstgehostet, mit Inhaltstypen, die du selbst definierst. Das Editor-Dokument wird in der Regel zu einem JSON-Feld auf einem Seitensammlungstyp.
CF
Contentful
REST · GraphQL
Getrennte Liefer- und Management-APIs. Der Editor schreibt über das Management-API; dein Frontend liest weiterhin das Liefer-API.
SN
Sanity
GROQ · GraphQL
Portable Text und einen Dokumentspeicher. Das Editor-Dokument liegt neben deinen bestehenden Feldern, anstatt sie zu ersetzen.
DR
Directus
REST · GraphQL
Die einzige Plattform auf dieser Liste mit einem bereits auf GJS.Market veröffentlichten Community-Speicher-Plugin.
GraphQL-first, also ist der Adapter eine Abfrage und eine Mutation statt zwei URLs.
PX
Prismic
REST
Slice-basierte Inhalte. Editor-Blöcke werden sauber auf Slices abgeordnet, wenn du die Block-Menge darauf ausrichtest.
PL
Payload
REST · GraphQL
Code-definierte Sammlungen, sodass das Feld, in das der Editor schreibt, im selben Repository wie der Editor deklariert ist.
API
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.
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.
GrapesJS-Komponente
Visueller Block
Dein Inhaltsschema
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
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
Projekt-/Komponentendaten
→Editierbare Quelle
→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
HTML + CSS
→Gerenderte Ausgabe
→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.
Anwendungsfälle
Was kann man mit einem headless CMS Visual Editor bauen?
Die gleiche Bearbeitungsebene, die auf verschiedene Teile deines Produkts zeigt. Jede dieser Ebenen hat eine eigene Seite auf GJS.Market, weil jede andere Fragen aufwirft, sobald du am Editor vorbei bist.
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.
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
CMS-Entwurf
Der Eintrag existiert in deinem CMS mit Draft-Status.
2
GrapesJS-Editor
Jemand schreibt die Seite auf der Canvas.
3
Vorschau
Dein Frontend rendert den Entwurf bei jeder Gerätebreite.
4
Prüfung
Eine zweite Person liest die Seite, da Besucher sie sehen werden.
5
Genehmigen
Die Genehmigung wird von deiner Anwendung erfasst, nicht vom Editor.
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.
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.
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.
GrapesJS-KernOpen Source
CMS-IntegrationDeine Arbeit
BlöckeGJS.Market
VorlagenGJS.Market
AssetsGJS.Market
SpeicherGJS.Market
FormulareGJS.Market
SEOGJS.Market
ExportGJS.Market
VeröffentlichungGJS.Market
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.
Speicherung & Persistenz
Wohin das Projektdokument gehört und was passiert, wenn ein Browser ausfällt, bevor er dort ankommt.
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.
Marketing-CMS
Blöcke, Vorlagen, eine Formularkomponente und ein SEO-Panel – genug für ein Team, das Kampagnenseiten ohne Entwickler veröffentlicht.
Ein Adapter zum Lesen, Absturzwiederherstellung, Accessibility und SEO-Audit sowie serverseitige Darstellung des gespeicherten Dokuments. Genehmigungs- und Prüfspuren bleiben individuelle Arbeit.
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 bauen
Erweiterung mit Plugins
Weitere Entwicklung
Schnellere Implementierung
Mehr Wartung
Wiederverwendbare Erweiterungen
Baue jedes Feature
Füge nur das hinzu, was du brauchst
Interne Werkzeuge
Fertige Lösungen
Beginnen Sie mit dem visuellen Editor. Fügen Sie Funktionen hinzu, während Ihr Produkt wächst.
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.
Funktion
Von Grund auf
GrapesJS
Canvas
Selbst bauen
Enthalten
Drag & Drop
Selbst bauen
Enthalten
Komponenten
Selbst bauen
Enthalten
Blöcke
Selbst bauen
Erweiterbar
Styling
Selbst bauen
Enthalten
Responsive Bearbeitung
Selbst bauen
Enthalten
Ebenen
Selbst bauen
Enthalten
Assets
Selbst bauen
Erweiterbar
Vorlagen
Selbst bauen
Erweiterbar
Speicher
Selbst bauen
Erweiterbar
Export
Selbst bauen
Erweiterbar
"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
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.
Richte die Komponententypen, die Blockbibliothek und die Stilkontrollen ein, die deine Editoren bekommen – und genauso wichtig, die, die sie nicht erhalten.
Speichere das Projektdokument über REST, GraphQL oder dein eigenes API, wobei die Authentifizierung von der Sitzung übernommen wird, die dein CMS bereits ausführt.
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.
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.
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.
GrapesJS
↓→
Speicheradapter
↓→
REST / GraphQL
↓→
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.
Wer baut so etwas
Wer baut Headless-CMS-Editoren?
Fünf wiederkehrende Muster. Sie stellen unterschiedliche Fragen an dieselbe Architektur, und zu jedem gibt es hier eine Seite, die seine eigenen beantwortet.
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.
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.