SPA-Modell-Routing spa-model-routing

Bei Single Page Applications in AEM ist die App für das Routing verantwortlich. In diesem Dokument werden der Routing-Mechanismus, der Vertrag und die verfügbaren Optionen beschrieben.

Projekt-Routing project-routing

Die App ist für das Routing verantwortlich und wird dann von den Frontend-Entwicklern des Projekts implementiert. In diesem Dokument wird das Routing für das vom AEM-Server zurückgegebene Modell beschrieben. Die Datenstruktur des Seitenmodells legt die URL der zugrunde liegenden Ressource offen. Das Frontend-Projekt kann eine benutzerdefinierte Bibliothek oder die Bibliothek eines Drittanbieters verwenden, die Routing-Funktionen bereitstellt. Sobald eine Route ein Modellfragment erwartet, kann die PageModelManager.getData()-Funktion aufgerufen werden. Wenn sich eine Modellroute geändert hat, muss ein Ereignis ausgelöst werden, um überwachende Bibliotheken wie den Seiteneditor zu warnen.

Architektur architecture

Eine ausführliche Beschreibung finden Sie im Abschnitt PageModelManager des SPA-Blueprint-Dokuments.

ModelRouter modelrouter

ModelRouter – sofern aktiviert – kapselt die HTML5 History-API-Funktionen pushState und replaceState, um sicherzustellen, dass ein bestimmtes Modellfragment vorab abgerufen und zugänglich ist. Anschließend benachrichtigt er die registrierte Frontend-Komponente, dass das Modell geändert wurde.

Vergleich von manuellem und automatischem Routing manual-vs-automatic-model-routing

ModelRouter automatisiert das Abrufen von Modellfragmenten. Aber wie jedes automatisierte Tool ist es mit Einschränkungen verbunden. Bei Bedarf kann ModelRouter deaktiviert oder so konfiguriert werden, dass Pfade mit Meta-Eigenschaften ignoriert werden (siehe Abschnitt „Meta-Eigenschaften“ im Dokument SPA-Seitenkomponente). Frontend-Entwickler können dann ihre eigene Modell-Routing-Schicht implementieren, indem sie PageModelManager auffordern, ein bestimmtes Modellfragment mithilfe der getData()-Funktion zu laden.

CAUTION
Die aktuelle Version von ModelRouter unterstützt nur die Verwendung von URLs, die auf den tatsächlichen Ressourcenpfad der Einstiegspunkte des Sling-Modells verweisen. Die Verwendung von Vanity-URLs oder Aliasnamen wird nicht unterstützt.

Routing-Vertrag routing-contract

Die aktuelle Implementierung basiert auf der Annahme, dass das SPA-Projekt die HTML5 History-API für das Routing zu den verschiedenen Anwendungsseiten verwendet.

Konfiguration configuration

ModelRouter unterstützt das Konzept des Modell-Routings, da es auf pushState- und replaceState-Aufrufe wartet, um Modellfragmente vorab abzurufen. Intern triggert es den PageModelManager, das Modell zu laden, das einer bestimmten URL entspricht, und löst ein cq-pagemodel-route-changed-Ereignis aus, das andere Module überwachen können.

Standardmäßig ist dieses Verhalten automatisch aktiviert. Um es zu deaktivieren, sollte die SPA die folgende Meta-Eigenschaft rendern:

<meta property="cq:pagemodel_router" content="disabled"\>

Jede Route der SPA sollte einer zugänglichen Ressource in AEM entsprechen (z. B. /content/mysite/mypage"), da der PageModelManager automatisch versucht, das entsprechende Seitenmodell zu laden, sobald die Route ausgewählt wird. Bei Bedarf kann die SPA jedoch auch eine „Blockierungsliste“ mit Routen definieren, die der PageModelManager ignorieren soll:

<meta property="cq:pagemodel_route_filters" content="route/not/found,^(.*)(?:exclude/path)(.*)"/>
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab