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

Angular-Page Builder

Angular Page Builder mit GrapesJS

Baue einen visuellen Drag-and-Drop-Seiten-Builder für Angular mit wiederverwendbaren Blöcken, Komponenten, Vorlagen, responsiver Bearbeitung und deinem eigenen Veröffentlichungsworkflow.

Visuelles Drag & DropIndividuelle KomponentenWiederverwendbare BlöckeResponsive BearbeitungDein BackendErweiterbar mit Plugins

26k+

GitHub-Sterne

1.4M+

npm-Downloads / Monat

100+

Plugins auf GJS.Market

$0

Lizenzgebühr, immer

Siehst du, wie es funktioniert

Das ist das, was Ihre Nutzer sehen würden

Drei echte GrapesJS-Editoren, die nur geladen werden, wenn man danach fragt. Keine dieser Demos ist eine Angular-Anwendung – und genau das ist der Punkt. GrapesJS rendert in ein Container-Element, das es besitzt, sodass die Bearbeitungsfläche genauso aussieht und sich auch verhält, egal welches Framework die Seite darum herum hostet.

In einem neuen Tab öffnen

Der Standard-Editor: Leinwand, Blöcke, Layer-Baum, Style-Manager und Geräte-Switcher. Das ist das Fundament, von dem aus du startest, bevor du einen eigenen Block hinzufügst.

grapesjs.com/demo.htmlKostenlos

Lädt einen Live-Editor von Drittanbietern aus grapesjs.com.

Fang hier an

Erstelle visuelle Seiten, ohne den Editor von Grund auf neu zu bauen

Einen Page Builder zu bauen erfordert weit mehr als nur ein paar Angular-Komponenten. Ein produktionsbereiter visueller Editor benötigt all diese Komponenten, bevor jemand eine Seite damit ausliefern kann:

  • Drag & Drop
  • Leinwand
  • Komponenten
  • Blöcke
  • Schichten
  • Stile
  • Responsive Bearbeitung
  • Vermögensverwaltung
  • Vorlagen
  • Projektlagerung
  • Export
  • Verlagswesen

GrapesJS bietet die visuelle Bearbeitungsgrundlage für den Großteil dieser Liste, sodass Ihre Angular-Anwendung ihr Budget stattdessen für Ihr Produkt und Ihre Geschäftslogik ausgeben kann. Die letzten beiden – wo Projekte gespeichert werden und wie Seiten live werden – bleiben bei dir, weil sie die Teile sind, die zu deiner Infrastruktur passen müssen.

GrapesJS Core ist Open Source unter der BSD-3-Clause-Lizenz, Version 0.23.6, ohne Lizenzgebühr in irgendeinem Maßstab.

Entdecken Sie GrapesJS
Architektur

Wie ein Angular-Seitengenerator funktioniert

Der Editor ist eine Möglichkeit innerhalb deiner Anwendung, kein Ersatz dafür. Alles oberhalb der Bearbeitungsebene bleibt genau dort, wo die Angular-Teams es bereits platziert haben.

  1. Angular-Anwendung

    Alles, was Ihr Produkt zu Ihrem macht, bleibt unverändert.

    • Authentifizierung
    • Nutzer
    • Abrechnung
    • Routing
    • Geschäftslogik
  2. Visueller Seitengenerator

    Eine lazy-loaded Route, eine Komponente, die den Container besitzt, und ein Service, der die Editor-Instanz besitzt.

    • Editor-Route
    • Editor-Komponente
    • Redaktionsdienst
  3. GrapesJS

    Die visuelle Bearbeitungs-Engine, die innerhalb des Containers läuft, den deine Komponente bereitstellt.

    • Leinwand
    • Komponenten
    • Blöcke
    • Schichten
    • Stile
    • Vermögenswerte
    • Kommandos
  4. Dein Backend

    Wo Projektdaten, Uploads und veröffentlichte Ausgaben tatsächlich gespeichert sind.

    • Dein API
    • Deine Datenbank
    • Dateispeicherung

Angular besitzt deine Anwendung. GrapesJS treibt die visuelle Bearbeitungsebene an.

Nichts im oberen oder unteren Bereich wird vom Editor bereitgestellt. Diese Grenze hält die Integration flach genug, um später entfernt zu werden – der Editor wird nie zu dem, worum dein Produkt aufgebaut ist.

Lies die Angular-Integrationsanleitung
Fähigkeiten

Alles, was du brauchst, um einen visuellen Editor zu bauen

Acht Subsysteme, die mit dem Motor geliefert werden. Jedes ist ein API, das du konfigurierst, nicht eine Blackbox, die du so annimmst.

Drag & Drop

Nutzer erstellen Seiten, indem sie Komponenten auf die Leinwand ziehen, neu ordnen und dort verschachteln, wo es erlaubt ist.

Komponenten

Definiere wiederverwendbare Komponententypen mit ihrem eigenen traits, Regeln darüber, was in sie fallen darf, und dein eigenes Verhalten.

Blöcke

Gib den Nutzern vordefinierte Abschnitte und Layouts in einer Palette statt einer Liste von rohen HTML-Elementen.

Style Manager

Lassen Sie Benutzer Typografie, Abstand, Farbe und Layout über von Ihnen gewählte und einschränkende Eigentumsfelder anpassen.

Responsive Bearbeitung

Vorschau und style eine Seite pro Breakpoint neu, wobei du die von dir definierten Gerätebreiten und nicht ein festes Set nutzt.

Vermögenswerte

Verwalte Bilder und andere Projektassets über einen Asset-Manager, den du auf deinen eigenen Speicher verweisen kannst.

Vorlagen

Speichere fertige Seiten als wiederverwendbare Startpunkte, damit die nächste Seite irgendwo anders als leer beginnt.

Export

Hol dir saubere HTML und CSS aus dem Editor oder lies das Projekt JSON und rendere es, wie es deine Anwendung bevorzugt.

Was absichtlich nicht auf dieser Liste steht: Hosting, ein CMS, ein Berechtigungsmodell und eine Veröffentlichungsinfrastruktur. Diese gehören zu deiner Anwendung, und die untenstehenden Abschnitte zeigen, wie sie verbunden sind.

Anpassung

Baue dein eigenes Angular-Page-Builder-Erlebnis

Ein generischer Website-Builder ist selten das Produkt, das jemand möchte. Jede Ebene des Editors kann stattdessen durch etwas ersetzt werden, das zu deiner Anwendung passt.

  1. Ihr Produkt
  2. Individuelle Komponenten
  3. Benutzerdefinierte Blöcke
  4. Benutzerdefinierte Vorlagen
  5. Benutzerdefinierte Befehle
  6. Custom UI

Jede Ebene beschränkt den Editor auf dein Content-Modell. Beim letzten Punkt schreiben Nutzer dein Produkt – nicht eine Website.

Registrieren Sie Komponententypen, die Ihre eigenen Domänenobjekte spiegeln, stellen Sie nur das traits offen, auf das Ihr Backend reagieren kann, und fügen Sie sie in die Blockpalette unter Ihre eigenen Kategorien ein. Nutzer arbeiten dann mit einer Preistabelle oder einem Produktraster, das Ihr API bereits versteht, anstatt mit willkürlichem Markup, das Sie später parsen müssen.

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' },
});

Ein Komponententyp und der Block, der ihn einfügt. Die Eigenschaften werden zu den Feldern, die dein Backend liest.

Blöcke & Vorlagen

Geben Sie den Nutzern die richtigen Bausteine

Der Unterschied zwischen einem Editor, den viele benutzen, und einem, den sie aufgeben, ist meist das, was am ersten Tag in der Palette ist.

Deine Blöcke

  • Hero
  • Funktionsraster
  • Preisgestaltung
  • Erfahrungsberichte
  • FAQ
  • Kontakt
  • CTA
  • Footer

Lass die Nutzer nicht von einer leeren Leinwand starten.

Erstelle wiederverwendbare Blöcke und Vorlagen, die zum Designsystem deiner Anwendung passen, sodass jede Seite, die ein Nutzer erstellt, bereits markengerecht und reaktionsschnell ist. GJS.Market liefert Blocksets und Vorlagenmanager, die du installieren kannst, anstatt die ersten fünfzig von Grund auf zu erstellen.

Durchsuchen Sie Blöcke und Vorlagen
Lagerung

Speichern Sie Projekte im Angular-Backend

GrapesJS serialisiert ein Projekt an JSON und übergibt es an einen Speicheradapter. Was dieser Adapter macht, liegt ganz bei dir.

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

Der Editor spricht nie mit deiner Datenbank. Er ruft den Adapter auf, den du registriert hast, und der Adapter ruft den bereits vorhandenen API auf.

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 },
});

Ein maßgeschneiderter Speicheradapter, der mit deinem API verbunden ist. Hier ist nichts spezifisch für GJS.Market – es ist der dokumentierte Speichervertrag des Editors.

  • Projektdaten

    Komponenten, Stile, Seiten und Assets serialisieren sich zu einem JSON-Dokument, das du in jeder Spalte oder Sammlung speichern kannst.

  • Autosave

    Der Speichermanager kann nach einer konfigurierbaren Anzahl von Änderungen speichern, nicht nur bei einer expliziten Aktion.

  • Fernspeicherung

    Registrieren Sie einen benutzerdefinierten Adapter und routen Sie über Angular's HttpClient, mit eigenen Abfang- und Authentifizierungsheadern.

  • Versionierung

    Da jeder Speicherstand ein Dokument ist, ist das Führen des Verlaufs eine Entscheidung im Backend – der Editor muss nicht wissen, dass es passiert ist.

  • HTML/CSS-Ausgang

    Exportiere das gerenderte Markup zusammen mit dem Projekt-JSON, wenn dein Lieferpfad eine statische Ausgabe statt eines erneuten Renderings benötigt.

  • Verlagswesen

    Eine veröffentlichte Seite ist ein separater Datensatz mit eigenem Lebenszyklus. Halte sie getrennt vom Entwurf, auf den der Editor schreibt.

Du bestimmst, wo Projektdaten gespeichert werden.

Verlagswesen

Vom visuellen Schnitt bis zur Produktion

Authoring und Publishing sind unterschiedliche Probleme mit unterschiedlichen Fehlermodi. Der Editor löst das erste; das zweite bleibt in deiner Infrastruktur, wo dein Caching, deine Berechtigungen und Rollbacks bereits liegen.

  1. Erstellen Sie
  2. Bearbeitung
  3. Speichern
  4. Rezension
  5. Veröffentlichen
  6. Live-Seite

Wohin veröffentlichte Ausgaben gelangen können

  • CMS

    Schreiben Sie die Ergebnisse zurück in das Inhaltssystem, das Ihre Organisation bereits betreibt.

  • REST API

    Poste das Projekt oder das gerenderte Markup auf einen Endpunkt, der Validierung und Berechtigungen besitzt.

  • Statische Veröffentlichung

    Rendere Seiten zum Zeitpunkt der Veröffentlichung in Dateien, sodass die Live-Seite keinen Teil der Laufzeit des Editors enthält.

  • Benutzerdefiniertes Backend

    Speichere, transformieren und bereitstellen Sie die Ausgabe über denselben Pfad, den Ihre Anwendung bereits zur Bereitstellung ihrer Seiten verwendet.

  • CDN

    Drücke veröffentlichte Assets und Markup an den Rand, wobei du die Cache-Invalidierung kontrollierst.

  • Benutzerdefinierte Bereitstellung

    Lösen Sie Ihre bestehende Build- oder Deployment-Pipeline aus der Veröffentlichungsaktion aus.

GrapesJS übernimmt das Authoring. Deine Infrastruktur kann das Veröffentlichen übernehmen.

Multi-Tenant

Baue einen Multi-Tenant Angular-Seitenbuilder

Eine Bereitstellung Ihrer Angular-Anwendung, ein Editor und eine separate Seite für jeden Kunden darin.

Angular SaaS

  • Org A

    • Seiten
    • Vermögenswerte
    • Vorlagen
  • Org B

    • Seiten
    • Vermögenswerte
    • Vorlagen
  • Org C

    • Seiten
    • Vermögenswerte
    • Vorlagen
  • Separate Projekte pro Tenant, die vom authentifizierten Benutzer und nicht von einem Routenparameter gelöst werden.
  • Tenant-scoped Asset Storage, sodass ein Upload niemals im Asset Manager eines anderen Kunden angezeigt werden kann.
  • Vorlagen, die global, pro Plan oder pro Mieter sein können, je nachdem, was du verkaufst.
  • Rollen und Berechtigungen, die auf dem Server für jeden Lade-, Speicher- und Veröffentlichungsaufruf durchgesetzt werden.
  • Per-Tenant-Branding, vom Editor Chrome bis zur Blockpalette.
  • Veröffentlichungsziele, die je nach Tenant unterschiedlich sind – ihre Domain, ihr CDN, ihre Pipeline.

Nichts davon ist eine GrapesJS-Funktion. Der Editor hat kein Konzept eines Tenants: Er lädt das zugewiesene Projekt und speichert das zurückgegebene Projekt. Tenancy ist etwas, das Ihre Angular-Anwendung und Ihr Backend implementieren – weshalb es auch das Isolationsmodell anpassen kann, das Sie bereits haben.

Entdecken Sie den SaaS Page Builder
White-Label

Mach deinen Angular-Seiten-Builder zu deinem eigenen

Nichts am Editor muss so aussehen wie der Editor. Jede Oberfläche, die ein Nutzer berührt, ist konfigurierbar, austauschbar oder entfernbar.

  • Dein Logo anstelle des Chroms des Editors
  • Deine Farbmarker, kein Drittpartei-Thema
  • Benutzerdefinierte Panels oder dein eigenes Angular UI, das den Editor durch Befehle steuert
  • Nur die Blöcke, die dein Produkt unterstützt
  • Vorlagen, die aus deinem Designsystem stammen
  • Dein Vokabular – Abschnitte, Module, Layouts, was auch immer deine Nutzer bereits sagen
  • Rollen, die entscheiden, wer bearbeiten, wer veröffentlichen darf und wer nur kommentieren darf
  • Auf dem Server durchgesetzte Berechtigungen, die sich im UI widerspiegeln

Machen Sie einen visuellen Editor zu einem nativen Teil Ihres Angular-Produkts.

Erkunden Sie den White-Label-Seiten-Builder
Integrieren

Integration von GrapesJS mit Angular

Die Kurzfassung, in vier Schritten. Der vollständige Leitfaden – Lebenszyklusdetails, Wrapper, zonenlose Änderungserkennung, Produktionsbedenken – lebt auf eigener Seite und geht viel weiter als das.

  1. 1

    Installation

    Füge den Editor deiner Anwendung hinzu. Es ist ein schlichtes npm-Paket ohne Angular-spezifischen Build-Schritt.

  2. 2

    Erstellen Sie einen Editor-Service

    Halte die Editor-Instanz in einem injizierbaren Service, damit die Komponente dünn bleibt und die Instanz einfach zu teilen, mocken und zerlegen ist.

  3. 3

    Initialisieren in ngAfterViewInit

    Das Container-Element muss im DOM sein, bevor der Editor erstellt wird, da GrapesJS es sofort misst.

  4. 4

    Zerstöre korrekt in ngOnDestroy

    Ruf destroy, wenn die Route links ist. Ohne sie behält der Editor seine DOM-Listener und die nächste Navigation leakt eine Instance.

npm install grapesjs

Eine Abhängigkeit. Kein Angular-spezifischer Wrapper ist erforderlich.

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;
  }
}

Der Dienst besitzt die Instanz und ihre Lebensdauer; die Komponente besitzt nur den Container.

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();
  }
}

Erschaffe, nachdem die Ansicht existiert, zerstöre, wenn sie verschwindet. Dieses Paar ist der Großteil der Integration.

Brauchen Sie den vollständigen Angular-Integrationsleitfaden?

Wrapper-Optionen, zonenlose Änderungserkennung, faul geladene Editor-Routen, Asset-Handling und die Produktions-Checkliste werden dort komplett abgedeckt.

Lesen Sie den Angular-Integrationsleitfaden
Veränderungserkennung

Arbeit mit Angular-Änderungserkennung

GrapesJS sendet eigene Ereignisse, und diese Ereignisse stammen nicht aus Angular. Die Koordination der beiden sind ein paar Zeilen, aber das Überspringen führt zu den beiden Fehlern, die jede Integration zuerst trifft.

  1. GrapesJS-Ereignis
  2. NgZone.run()
  3. Angular-Zustand
  4. UI-Update
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()));
});

Der Wiedereintritt in die Zone in dem einen Handler, der den gerenderten Zustand aktualisiert.

Erstelle den Editor innerhalb von runOutsideAngular, sodass die Canvas-Interaktion nicht bei jedem Frame die Änderungserkennung plant, und tritt dann in die Zone in den wenigen Ereignishandlern ein, die tatsächlich den Status aktualisieren, die deine Vorlage rendert. Bei einer zonenlosen Anwendung aktualisieren dieselben Handler stattdessen die Signale, und der äußere Wrapper wird nicht mehr benötigt.

Mehr zum Angular-Lebenszyklus und Zonen
Serverseitiges Rendering

Angular SSR und GrapesJS

GrapesJS benötigt einen Browser DOM. Bei Angular SSR oder Angular Universal bedeutet das, dass der Editor nur im Browser erstellt wird – die Route um ihn herum wird auf dem Server weiterhin wie gewohnt gerendert.

Bewache die Initialisierung mit isPlatformBrowser und kehre frühzeitig auf dem Server zurück. Der Rest der Route bleibt unverändert: Wachen, Resolver und das umliegende Markup behalten ihr server-rendertes Verhalten, und nur der Editor-Container kommt leer an.

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);
  }
}

Die gesamte SSR-Anpassung: eine Plattformkontrolle, bevor der Editor erstellt wird.

TypeScript & AOT

Angular, TypeScript und AOT

Die Integration ist gewöhnlicher Angular-Code, was das Wichtigste ist, das darüber zu sagen.

  • TypeScript-freundlich

    Der Editor liefert eigene Typdefinitionen, sodass die Instanz, ihre Konfiguration und ihre Ereignisse am Aufrufstandort getippt werden.

  • Angular-Lebenszyklus

    Erstellung und Zerlegung hängt von ngAfterViewInit und ngOnDestroy ab – kein manuelles Bootstrapping außerhalb des Komponentenbaums.

  • AOT-kompatibel

    Nichts in der Integration hängt von der Laufzeit-Template-Kompilierung ab, daher baut sich die Editor-Route wie jede andere lazy-loaded-Route.

  • Browser-only Initialisierung

    Wo SSR im Spiel ist, ist nur die Editor-Erstellung browser-geschützt; der Rest der Komponente kompiliert und rendert normal.

Bauen vs. übernehmen

Baue einen Angular-Seitenbuilder von Grund auf statt GrapesJS

Jede untenstehende Funktion muss vorhanden sein, bevor ein visueller Editor benutzbar ist. Die einzige Frage ist, welchen du selbst schreibst.

LeistungsfähigkeitVon Grund aufGrapesJS
Visuelle LeinwandSelbst bauenEnthalten
Drag & DropSelbst bauenEnthalten
KomponentenSelbst bauenEnthalten
BlöckeSelbst bauenErweiterbar
DesignSelbst bauenEnthalten
Responsive BearbeitungSelbst bauenEnthalten
VermögenswerteSelbst bauenErweiterbar
VorlagenSelbst bauenErweiterbar
LagerungSelbst bauenErweiterbar
ExportSelbst bauenErweiterbar
Angular-IntegrationSelbst bauenIntegrieren

"Erweiterbar" bedeutet, dass das Subsystem existiert und ein dokumentiertes API hat, das du auf deine eigene Implementierung verweist – nicht, dass es vorverdrahtet an dein Backend ankommt. Verifiziert mit GrapesJS 0.23.6 auf 2026-09-03.

Baue dein Angular-Produkt. Baue die visuelle Bearbeitungs-Engine nicht neu auf.

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

Der Stapel, den ein arbeitender Bauunternehmer am Ende bekommt. GrapesJS deckt die erste Schicht ab; der Rest ist bei dir zum Zusammenbauen, Installieren oder Kaufen.

Plugins

Erweitern Sie Ihren Angular-Page Builder mit Plugins

Die Engine bietet dir die Bearbeitungsfläche. Alles, was ein bestimmtes Produkt darüber benötigt – die Blockpalette, das Template-System, Rich Text, Persistenz, der Exit-Weg zur Produktion – ist der Punkt, an dem GJS.Market-Plugins ins Spiel kommen. Jede untenstehende Präsentation ist ein echtes Produkt, bepreist wie angegeben.

Bauen oder erweitern

Fang mit dem Editor an. Füge hinzu, was dein Produkt benötigt.

Beide Säulen enden mit einem funktionierenden Bauunternehmer. Sie unterscheiden sich darin, wie viel davon man in zwei Jahren noch instand hält.

GrapesJS bietet die visuelle Bearbeitungsgrundlage. GJS.Market-Plugins ermöglichen es dir, deinen Builder um zusätzliche Funktionen zu erweitern, anstatt jede Funktion intern zu bauen.

Bau alles selbst

  • Weitere Entwicklung vor der ersten nutzbaren Veröffentlichung
  • Mehr Wartung, je mehr Browser, Angular und dein Designsystem sich bewegen
  • Mehr interner Code, den nur dein Team versteht
  • Jedes Editor-Subsystem wird zu etwas, für das man bereitsteht.

Erweiterung mit Plugins

  1. Installieren Sie, was das Produkt tatsächlich benötigt
  2. Konfigurieren Sie es gegen Ihr Inhaltsmodell
  3. Passe die Teile an, die deine Nutzer sehen
  4. Versand und halte dein Budget für deine eigenen Features
Zielgruppe

Wer baut Angular-Seiten-Builder?

Fünf wiederkehrende Muster, und was jede von ihnen wirklich mit einem visuellen Editor kauft.

SaaS-Unternehmen

Fügen Sie einem Produkt visuelle Bearbeitung hinzu, dessen Kunden bereits den Support bitten, eine Seite für sie zu ändern.

Agenturen

Baue pro Client eine eigene Bearbeitungsumgebung, anstatt ein CMS zu übergeben, das niemand wollte.

CMS-Plattformen

Fügen Sie visuelles Bearbeiten hinzu, ohne ein ganzes Roadmap-Jahr damit zu verbringen, eine Editor-Engine von Grund auf zu schreiben.

Marketingplattformen

Lass Marketer Seiten erstellen und ändern, ohne dass bei jeder Überschrift ein Entwickler eingeweiht ist.

Enterprise-Teams

Schaffen Sie kontrollierte interne Bearbeitungsabläufe, bei denen das, was bearbeitet werden kann, genauso wichtig ist wie das, was gebaut werden kann.

Wähle deinen Weg

Wählen Sie den richtigen Ansatz zum Page Builder

Vier Möglichkeiten, einen visuellen Editor auszuliefern. Sie überschneiden sich, aber sie beginnen mit unterschiedlichen Einschränkungen – und wenn man den falschen auswählt, taucht es zu spät auf.

Dasselbe auf einem anderen Framework bauen? Das Argument ist für React, Next.js und Vue identisch – nur ändert sich der Lebenszykluscode. React-Page Builder, Next.js-Page Builder, Vue-Page Builder.

Leistung

Leistungsüberlegungen

Ein Editor ist eine umfangreiche Anwendung, und eine veröffentlichte Seite nicht. Sie als ein Bündel zu behandeln, ist ein Fehler, den man frühzeitig vermeiden sollte.

  1. Lazy-Load den Editor-Weg

    Nutzer, die den Builder nie öffnen, sollten ihn niemals herunterladen. Eine faule Route hält den Editor aus deinem Hauptpaket heraus.

  2. Vermeiden Sie unnötige Neuinterpretationen

    Erstellen Sie den Editor außerhalb der Angular-Zone und geben Sie ihn nur in den Handlern erneut ein, die den gerenderten Zustand aktualisieren.

  3. Optimieren Sie große Asset-Bibliotheken

    Paginieren Sie den Asset Manager mit Ihrem API, anstatt ihm mehrere tausend Bilder auf einmal zu geben.

  4. Initialisieren nur bei Bedarf

    Erstelle die Instanz, wenn der Editor tatsächlich angezeigt wird, nicht wenn die umgebende Komponente mountet.

  5. Lassen Sie den Editor-Code aus veröffentlichten Seiten heraus

    Die veröffentlichten Ausgaben sind HTML und CSS. Nichts am Editor muss mitgeliefert werden.

Die Editor-Laufzeit und die veröffentlichte Seite müssen nicht dieselben Leistungsanforderungen haben.

Sicherheit

Sicherheitsaspekte

Ein visueller Editor akzeptiert von Nutzern erstellte Inhalte und schreibt sie zurück auf Ihr System. Jede dieser Inhalte gehört auf die Serverseite dieses Austauschs.

  1. Serverseitige Autorisierung

    Überprüfen Sie bei jedem Aufruf beim Laden, speichern und Veröffentlichen, ob dieser Benutzer an diesem Projekt mitwirken kann.

  2. Mieterisolation

    Lösen Sie den Tenant aus der Sitzung auf, niemals aus einem Parameter, den der Client ändern kann.

  3. Upload-Validierung

    Typ und Größe serverseitig validieren und Uploads von einem Ursprung ausliefern, der sie nicht ausführen kann.

  4. API-Authentifizierung

    Der Speicheradapter läuft im Browser. Seine Endpunkte benötigen dieselbe Authentifizierung wie der Rest deines API.

  5. Inhaltsreinigung

    Wo Editoren benutzerdefinierten Code einbetten können, desinfizieren Sie auf dem Server, bevor dieses Markup an andere ausgeliefert wird.

  6. Geschützte Veröffentlichungs-Endpunkte

    Das Veröffentlichen verändert, was die Öffentlichkeit sieht. Begrenze die Rate, logge es und sperre es hinter seine eigene Berechtigung.

  7. Serverseitige Berechtigungsprüfungen

    Das Ausstecken eines Knopfes ändert den UI, nicht den API. Jede Regel, die das UI impliziert, muss ebenfalls dahinter existieren.

Verlasse dich niemals nur auf clientseitige Berechtigungen.

Dienstleistungen

Brauchen Sie Hilfe beim Erstellen Ihres Angular-Page Builders?

Benötigen Sie Hilfe bei der Integration, Erweiterung oder Anpassung von GrapesJS in Ihrer Angular-Anwendung? Unser Team kann bei der Integration, benutzerdefinierten Plugins, UI-Anpassung und Produktionsimplementierung helfen.

  • Angular-Integration und Editor-Architektur
  • Benutzerdefinierte Komponenten, Blöcke und Plugins
  • UI-Anpassung und White-Labelling
  • Lagerung, Veröffentlichung und Produktionsausbau
Entdecken Sie Dienstleistungen
FAQ

Fragen zum Angular-Page Builder

Was ist ein Angular-Page Builder?

Ein visueller Editor innerhalb einer Angular-Anwendung, der es Nutzern ermöglicht, Seiten zusammenzustellen, indem sie Komponenten auf eine Leinwand ziehen, anstatt Markup zu schreiben. Die Angular-App besitzt Routing, Authentifizierung und Daten; der Editor besitzt die Bearbeitungsfläche.

Kann ich GrapesJS mit Angular verwenden?

Ja. GrapesJS ist framework-agnostisch: Es rendert in ein Container-Element, das du ihm gibst, sodass es innerhalb einer Angular-Komponente wie jede andere DOM-basierte Bibliothek funktioniert.

Ist GrapesJS ein Angular-Page Builder?

Nein – es ist die visuelle Bearbeitungs-Engine, auf der ein Angular-Page Builder basiert. Es gibt keinen offiziellen Angular-Wrapper; man integriert die Kernbibliothek direkt, die eine Komponente und ein Dienst ist.

Wie integriere ich GrapesJS mit Angular?

Installiere das Paket, behalte die Instanz in einem injizierbaren Service, erstelle es in ngAfterViewInit, sobald der Container im DOM ist, und zerstöre es in ngOnDestroy. Der vollständige Guide behandelt Wrapper, Zonen und Produktionsprobleme.

Kann ich eigene Blöcke erstellen?

Ja. Blöcke werden über den Blockmanager mit deinem eigenen Label, deiner Kategorie und deinem Inhalt registriert, sodass die Palette nur Bereiche enthalten kann, die dein Produkt unterstützt.

Kann ich benutzerdefinierte Komponenten erstellen?

Ja. Komponententypen werden mit eigenen traits, Drop-Regeln und Verhalten registriert, wodurch der Editor von generischem HTML bis zu deinem Inhaltsmodell eingegrenzt wird.

Kann ich wiederverwendbare Vorlagen erstellen?

Ja. Ein gespeichertes Projekt kann als Ausgangspunkt für eine neue Seite neu geladen werden. Vorlagenbibliotheken und -manager sind ebenfalls als Plugins verfügbar, falls du das UI lieber nicht bauen möchtest.

Kann ich Projekte im Angular-Backend speichern?

Ja. Registriere einen benutzerdefinierten Speicheradapter, dessen Lade- und Speichermethoden dein API über HttpClient aufrufen, sodass deine Interceptoren, Auth-Header und Fehlerbehandlung wie gewohnt angewendet werden.

Kann ich meine eigene Datenbank verwenden?

Ja. Der Editor erstellt ein JSON-Dokument und kommuniziert nie mit einer Datenbank selbst, daher ist die Speicherort des Dokuments ganz eine Backend-Entscheidung.

Kann ich mit Angular einen Landingpage-Builder bauen?

Ja, und es ist eine der häufigsten Verwendungszwecke: eine eingeschränkte Blockpalette, markenbezogene Vorlagen und eine Veröffentlichungsaktion, die dorthin schreibt, wo Ihre Marketingseiten bereitgestellt werden.

Kann ich einen Angular CMS-Editor bauen?

Ja. Der Editor ersetzt den formularbasierten Bearbeitungsbildschirm; dein CMS behält das Eigentum an Inhaltstypen, Arbeitsabläufen und Berechtigungen.

Kann ich einen Formular-Builder mit Angular bauen?

Ja. Registriere deine eigenen Feldkomponenten als Komponententypen bei traits zur Validierung und Benennung, damit das, was die Nutzer zusammenstellen, auf ein Schema abgebildet wird, das dein Backend versteht.

Kann ich einen Multi-Tenant Angular-Page Builder erstellen?

Ja, aber Mieter ist die Aufgabe deiner Anwendung. Der Editor hat kein Konzept eines Mieters – dein Backend entscheidet, welche Projekte, Assets und Vorlagen der aktuelle Nutzer sehen kann.

Kann ich einen White-Label-Angular-Builder erstellen?

Ja. Panels, Icons, Farben, Blockkategorien und Terminologie sind alle konfigurierbar, und du kannst den Editor von deinem eigenen Angular UI über den Befehl API steuern.

Funktioniert GrapesJS mit Angular SSR?

Die umliegende Route wird auf dem Server wie gewohnt gerendert; der Editor selbst wird nur im Browser erstellt. Guard-Initialisierung mit isPlatformBrowser und Zurück früh auf dem Server.

Wie funktioniert GrapesJS mit Angulars NgZone?

Erstelle den Editor innerhalb von runOutsideAngular, damit die Canvas-Interaktion nicht ständig die Änderungserkennung auslöst, und nutze dann NgZone.run in den wenigen Ereignishandlern, die den Zustand deiner Vorlage aktualisieren.

Kann ich TypeScript verwenden?

Ja. GrapesJS liefert eigene Typdefinitionen, sodass die Editor-Instanz, ihr Konfigurationsobjekt und ihre Ereignisse in einer gewöhnlichen Angular-TypeScript-Codebasis getippt werden.

Kann ich den Builder mit Plugins erweitern?

Ja. Plugins sind Funktionen, die den Editor empfangen und Komponenten, Blöcke, Befehle oder Panels registrieren. GJS.Market listet kostenlose und kommerzielle Plugins für Blöcke, Rich Text, Speicher, Assets und Export auf.

Leg los.

Baue deinen Angular-Page Builder, ohne ganz von vorne anzufangen

Nutze Angular für deine Anwendung und GrapesJS für das visuelle Bearbeitungserlebnis. Füge eigene Komponenten, Blöcke, Vorlagen, Speicher- und Veröffentlichungsworkflow hinzu – und erweitere den Builder dann mit GJS.Market-Plugins, wenn du mehr brauchst.

Start

Loslegen

Installiere den Editor, montiere ihn auf einem Container innerhalb einer Angular-Komponente und habe heute Nachmittag etwas auf dem Bildschirm.

Loslegen
Erweitern

Plugins durchsuchen

Blöcke, Vorlagen, Rich Text, Speicher und Export – installieren Sie die Funktionen, die Ihr Produkt benötigt, anstatt sie zu schreiben.

Plugins durchsuchen
Integrieren

Angular-Leitfaden ansehen

Lebenszyklus, Zonen, SSR, Wrapper und die Produktionscheckliste, von Anfang bis Ende auf der Integrationsseite abgedeckt.

Angular-Leitfaden ansehen

Deine Angular-App. Dein Editor. Dein Produkt.