SPA Modellroutning

För enkelsidiga program i AEM ansvarar appen för routningen. I det här dokumentet beskrivs routningsmekanismen, kontraktet och tillgängliga alternativ.

OBSERVERA

SPA Editor är den rekommenderade lösningen för projekt som kräver SPA ramverksbaserad återgivning på klientsidan (t.ex. Reaktion eller Vinkel).

Projektroutning

Appen äger routningen och implementeras sedan av projektutvecklarna. Det här dokumentet beskriver routningen som är specifik för den modell som returneras av AEM. Sidmodellens datastruktur visar den underliggande resursens URL. Det främsta projektet kan använda vilket anpassat bibliotek eller tredjepartsbibliotek som helst som tillhandahåller routningsfunktioner. När en väg förväntar sig ett fragment av modellen kan ett anrop till funktionen PageModelManager.getData() göras. När en modellväg har ändrats måste en händelse aktiveras för att varna avlyssningsbibliotek som t.ex. Page Editor.

Arkitektur

En detaljerad beskrivning finns i avsnittet PageModelManager i SPA.

ModelRouter

ModelRouter - när den är aktiverad - kapslar in API-funktionerna för HTML5-historik pushState och replaceState för att garantera att ett visst modellfragment är förhämtat och tillgängligt. Därefter meddelas den registrerade frontkomponenten om att modellen har ändrats.

Manuell kontra automatisk modellroutning

ModelRouter automatiserar hämtning av fragment av modellen. Men som alla automatiserade verktyg har de begränsningar. Vid behov kan ModelRouter inaktiveras eller konfigureras att ignorera sökvägar med metaegenskaper (se avsnittet Metaegenskaper i SPA Page Component-dokumentet). Utvecklare på frontsidan kan sedan implementera sitt eget modellroutningslager genom att begära att PageModelManager läser in ett givet fragment av modellen med funktionen getData().

OBSERVERA

För närvarande illustrerar exempelprojektet React i Web.Retail Journal det automatiserade tillvägagångssättet medan projektet Angular visar det manuella. Ett halvautomatiskt tillvägagångssätt skulle också vara ett giltigt användningsfall.

FÖRSIKTIGHET

Den aktuella versionen av ModelRouter stöder endast användning av URL:er som pekar mot den faktiska resurssökvägen för Sling Model-startpunkter. Det stöder inte användning av Vanity-URL:er eller alias.

Routningskontrakt

Den aktuella implementeringen baseras på antagandet att det SPA projektet använder API:t för HTML5-historik för routning till de olika programsidorna.

Konfiguration

ModelRouter stöder begreppet modellroutning när den lyssnar efter pushState- och replaceState-anrop för att hämta modellfragment i förväg. Internt aktiveras PageModelManager för att läsa in modellen som motsvarar en angiven URL och utlöser en cq-pagemodel-route-changed-händelse som andra moduler kan avlyssna.

Som standard aktiveras det här beteendet automatiskt. SPA bör återge följande metaegenskap för att inaktivera den:

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

Observera att varje väg i SPA ska motsvara en tillgänglig resurs i AEM (t.ex. " /content/mysite/mypage") eftersom PageModelManager automatiskt försöker läsa in motsvarande sidmodell när flödet har valts. Vid behov kan SPA även definiera ett “blockeringslista” för vägar som ska ignoreras av PageModelManager:

<meta property="cq:pagemodel_route_filters" content="route/not/found,^(.*)(?:exclude/path)(.*)"/>

På denna sida