Le applicazioni a pagina singola (SPA) possono offrire esperienze coinvolgenti agli utenti di siti Web. Gli sviluppatori desiderano essere in grado di creare siti utilizzando SPA framework e gli autori desiderano modificare i contenuti all'interno di AEM per un sito creato utilizzando tali framework.
SPA Editor offre una soluzione completa per SPA di supporto in AEM. Questo articolo descrive l’utilizzo di un’applicazione SPA di base per l’authoring e mostra come si collega all’editor SPA AEM sottostante.
In questo articolo vengono introdotti i concetti di base di SPA prima di guidare il lettore attraverso una procedura dettagliata dell'editor SPA, utilizzando una semplice applicazione SPA per illustrare la modifica di base dei contenuti. Viene quindi descritto come creare la pagina e come l’applicazione SPA si collega e interagisce con l’editor SPA AEM.
L'obiettivo di questa introduzione e di questa procedura dettagliata è dimostrare a uno sviluppatore AEM perché SPA rilevanti, come funzionano in generale, come un SPA viene gestito dall'Editor SPA AEM e come è diverso da un'applicazione AEM standard.
La procedura dettagliata si basa sulla funzionalità standard AEM e sull'app di esempio WKND SPA Project. Per seguire, scaricare e installare l'app di progetto WKND SPA di esempio da GitHub qui.
Questo documento utilizza l' app progetto WKND SPA solo a scopo dimostrativo. Non deve essere utilizzato per nessun progetto.
Qualsiasi progetto AEM deve sfruttare il AEM Project Archetype, che supporta SPA progetti utilizzando React o Angular e sfrutta l'SDK SPA.
Un’applicazione a pagina singola (SPA) è diversa da una pagina tradizionale in quanto viene sottoposta a rendering sul lato client ed è principalmente guidata da Javascript, basandosi sulle chiamate Ajax per caricare i dati e aggiornare dinamicamente la pagina. La maggior parte o tutto il contenuto viene recuperato una volta in un singolo caricamento di pagina con risorse aggiuntive caricate in modo asincrono in base alle esigenze, in base all'interazione dell'utente con la pagina.
Questo riduce la necessità di aggiornare le pagine e offre all'utente un'esperienza semplice, rapida e più simile a un'esperienza app nativa.
AEM SPA Editor consente agli sviluppatori front-end di creare SPA che possono essere integrati in un sito AEM, consentendo agli autori dei contenuti di modificare i contenuti SPA con la stessa facilità con cui si trovano altri contenuti AEM.
Essendo più veloce, fluido e simile a un'applicazione nativa, un SPA diventa un'esperienza molto interessante non solo per il visitatore della pagina Web, ma anche per gli esperti di marketing e gli sviluppatori a causa della natura del funzionamento SPA.
L'idea principale alla base di un SPA è che le chiamate a un server e le dipendenze vengono ridotte al fine di ridurre i ritardi causati dalla latenza del server, in modo che il SPA si avvicini alla reattività di un'applicazione nativa.
In una pagina Web sequenziale tradizionale, vengono caricati solo i dati necessari per la pagina immediata. Questo significa che quando il visitatore si sposta in un’altra pagina, il server viene chiamato per le risorse aggiuntive. Potrebbero essere necessarie chiamate aggiuntive quando il visitatore interagisce con gli elementi sulla pagina. Queste chiamate multiple possono dare un senso di ritardo o ritardo, in quanto la pagina deve essere in grado di soddisfare le richieste del visitatore.
Per un'esperienza più fluida, che si avvicina alle aspettative di un visitatore dalle app native per dispositivi mobili, un SPA carica tutti i dati necessari per il visitatore al primo caricamento. Anche se inizialmente l'operazione potrebbe richiedere un po' più di tempo, elimina la necessità di ulteriori chiamate server.
Rendering sul lato client, gli elementi di pagina reagiscono più rapidamente e le interazioni con la pagina da parte del visitatore sono immediate. Eventuali dati aggiuntivi che potrebbero essere necessari vengono denominati in modo asincrono per massimizzare la velocità della pagina.
Per informazioni tecniche sul funzionamento SPA in AEM, consultate gli articoli:
Per informazioni più dettagliate sulla progettazione, l’architettura e il flusso di lavoro tecnico dell’editor SPA, consultate l’articolo:
Quando un SPA è creato per sfruttare l'editor SPA AEM, l'autore del contenuto non nota alcuna differenza quando si modifica e si crea contenuto. È disponibile una funzionalità AEM comune e non sono necessarie modifiche al flusso di lavoro dell’autore.
Modificate l'app WKND SPA Project in AEM.
http://localhost:4502/editor.html/content/wknd-spa-react/us/en/home.html
Selezionate un componente di testo e notate che una barra degli strumenti è simile a quella di qualsiasi altro componente. Seleziona Modifica.
Modificate il contenuto come normale all’interno AEM e tenete presente che le modifiche sono persistenti.
Usate il Browser risorse per trascinare una nuova immagine in un componente immagine.
La modifica è persistente.
Sono supportati ulteriori strumenti di authoring, come il trascinamento di componenti aggiuntivi sulla pagina, la ridisposizione dei componenti e la modifica del layout, come in qualsiasi applicazione AEM non SPA.
L'Editor SPA non modifica il DOM dell'applicazione. Il SPA stesso è responsabile del DOM.
Per vedere come funziona, andate alla sezione successiva di questo articolo SPA App e all'editor SPA AEM.
L'esperienza di come un SPA si comporta per l'utente finale e quindi l'analisi della pagina SPA aiuta a comprendere meglio come un'app SAP funziona con l'Editor SPA in AEM.
Caricate l'applicazione WKND SPA Project sul server di pubblicazione o utilizzando l'opzione Visualizza come pubblicato dal menu Informazioni pagina nell'editor pagina.
http://<host>:<port>/content/wknd-spa-react/us/en/home.html
Prendete nota della struttura delle pagine, inclusa la navigazione verso pagine figlie, menu e schede articolo.
Passa a una pagina figlia utilizzando il menu e verifica che la pagina venga caricata immediatamente senza che sia necessario effettuare un aggiornamento.
Aprite gli strumenti di sviluppo integrati del browser e monitorate l'attività di rete mentre vi spostate nelle pagine figlie.
Il traffico si riduce notevolmente quando si passa da una pagina all'altra nell'app. La pagina non viene ricaricata e vengono richieste solo le nuove immagini.
Il SPA gestisce il contenuto e il routing interamente sul lato client.
Quindi, se la pagina non viene ricaricata durante la navigazione tra le pagine figlie, come viene caricata?
La sezione successiva, Caricamento di un'applicazione SPA, approfondisce la procedura di caricamento del SPA e spiega come caricare il contenuto in modo sincrono e asincrono.
Se non è già stato caricato, caricate l'app WKND SPA Project sul server di pubblicazione o utilizzando l'opzione Visualizza come pubblicato dal menu Informazioni pagina nell'editor pagina.
http://<host>:<port>/content/wknd-spa-react/us/en/home.html
Utilizzate lo strumento incorporato del browser per visualizzare l’origine della pagina.
Il contenuto dell'origine è limitato.
clientlib-react.min.js
.Utilizzate gli strumenti integrati del browser per ispezionare la pagina. Visualizzare il contenuto del DOM completamente caricato.
Passate alla scheda Rete in Ispettore e ricaricate la pagina.
Ignorando le richieste di immagini, tenete presente che le risorse principali caricate per la pagina sono la pagina stessa, CSS, il JavaScript React, le sue dipendenze e i dati JSON per la pagina.
Caricate la home.model.json
in una nuova scheda.
http://<host>:<port>/content/wknd-spa-react/us/en/home.model.json
L'editor SPA AEM utilizza AEM Content Services per distribuire l'intero contenuto della pagina come modello JSON.
Implementando interfacce specifiche, Sling Models fornisce le informazioni necessarie al SPA. La consegna dei dati JSON viene delegata verso il basso a ciascun componente (dalla pagina al paragrafo, al componente, ecc.).
Ciascun componente sceglie le funzioni esposte e di rendering (lato server con HTL o lato client con React o Angular). Questo articolo è incentrato sul rendering lato client con React.
Il modello può anche raggruppare le pagine in modo che vengano caricate in modo sincrono, riducendo il numero di ricariche di pagina necessarie.
Nell'esempio dell'app progetto WKND SPA, le pagine home
, page-1
, page-2
e page-3
vengono caricate in modo sincrono, dal momento che i visitatori visitano generalmente tutte queste pagine.
Questo comportamento non è obbligatorio ed è completamente definibile.
Per visualizzare questa differenza di comportamento, ricaricare la pagina home
e cancellare l'attività di rete della finestra di ispezione. Andate a page-1
nel menu della pagina e vedete che l'unica attività di rete è una richiesta per l'immagine di page-1
. page-1
non deve essere caricato.
Utilizzando l'applicazione di esempio WKND SPA Project, è chiaro il funzionamento dell'app e come viene caricata quando viene pubblicata, sfruttando i servizi di contenuto per la distribuzione di contenuto JSON e il caricamento asincrono delle risorse.
Inoltre, per l'autore del contenuto, la creazione di contenuto tramite un editor SPA è perfettamente all'interno di AEM.
Nella sezione seguente verrà illustrato il contratto che consente all’editor SPA di correlare i componenti all’interno del SPA a AEM componenti e di ottenere questa esperienza di modifica senza soluzione di continuità.
Caricate l'applicazione WKND SPA Project nell'editor e passate alla modalità Preview.
http://<host>:<port>/editor.html/content/wknd-spa-react/us/en/home.html
Utilizzando gli strumenti di sviluppo incorporati del browser, controllate il contenuto della pagina. Con lo strumento selezione, selezionate un componente modificabile sulla pagina e visualizzate il dettaglio dell’elemento.
Il componente ha un nuovo attributo di dati data-cq-data-path
.
Esempio
data-cq-data-path="/content/wknd-spa-react/us/en/home/jcr:content/root/responsivegrid/text
Questo percorso consente il recupero e l'associazione dell'oggetto di configurazione del contesto di modifica di ciascun componente.
Questo è l'unico attributo di markup richiesto all'editor per riconoscere questo come componente modificabile all'interno del SPA. In base a questo attributo, l’Editor SPA determinerà quale configurazione modificabile è associata al componente, in modo che il frame, la barra degli strumenti e così via siano corretti. è caricato.
Alcuni nomi di classe specifici vengono aggiunti anche per i segnaposto di marketing e per la funzionalità di trascinamento della risorsa.
Questo comportamento è diverso dalle pagine sottoposte a rendering sul lato server in AEM, dove è inserito un elemento cq
per ciascun componente modificabile.
Questo approccio nell'Editor SPA elimina la necessità di inserire elementi personalizzati, basandosi solo su un attributo di dati aggiuntivo, semplificando il markup per lo sviluppatore frontend.
SPA può essere abilitata con livelli flessibili di integrazione all'interno AEM, compresi SPA sviluppati e mantenuti al di fuori di AEM. Inoltre, SPA può essere sfruttato all'interno di AEM e utilizzare AEM per distribuire contenuti ad endpoint aggiuntivi senza problemi.
Per ulteriori informazioni, vedere il documento Cuffia e Senza testa in AEM.
Ora che avete compreso l'esperienza di modifica SPA in AEM e come un SPA si collega all'Editor SPA, approfondisci la conoscenza di come un SPA è costruito.