Développement de SPA pour AEM developing-spas-for-aem
Les applications monopage (SPA) peuvent améliorer considérablement l’expérience des sites web. Les développeurs et développeuses souhaitent pouvoir créer des sites avec des frameworks SPA. Les auteurs et autrices, pour leur part, souhaitent modifier facilement du contenu dans AEM pour un site conçu à l’aide de tels frameworks.
Cet article présente des questions importantes à prendre en compte lors du recrutement d’un développeur ou d’une développeuse front-end pour développer une SPA pour AEM. Il propose un aperçu de l’architecture d’AEM pour le déploiement de SPA sur AEM.
Principes de développement de SPA pour AEM spa-development-principles-for-aem
Le développement d’applications monopages sur AEM suppose que le développeur ou la développeuse front-end respecte les bonnes pratiques standard lors de la création d’une SPA. Si le développeur ou la développeuse front-end respecte ces bonnes pratiques générales, ainsi que certains principes spécifiques à AEM, votre SPA sera fonctionnelle avec AEM et ses fonctionnalités de création de contenu.
- Portabilité : comme pour tout composant, les composants créés doivent être aussi portables que possible. La SPA doit être créée avec des composants portables et réutilisables.
- AEM détermine la structure du site : la personne chargée du développement front-end crée des composants et contrôle leur structure interne, mais elle dépend d’AEM pour définir la structure de contenu du site.
- Rendu dynamique : tout le rendu doit être dynamique.
- Routage dynamique : la SPA assure le routage, et AEM l’écoute et s’appuie dessus pour l’extraction. Tout routage devrait également être dynamique.
Si vous gardez ces principes à l’esprit pendant le déploiement de votre SPA, elle sera aussi flexible et évolutive que possible et permettra d’utiliser toutes les fonctionnalités de création d’AEM prises en charge.
Si vous n’avez pas besoin de prendre en charge les fonctionnalités de création d’AEM, vous devrez peut-être envisager un modèle de conception de SPA différent.
Portabilité portability
Comme lors du développement de tout composant, vous devez créer vos composants de manière à optimiser leur portabilité. Il convient d’éviter tout modèle qui va à l’encontre de la portabilité ou de la capacité de réutilisation des composants afin de garantir la compatibilité, la flexibilité et la maintenabilité à l’avenir.
Les SPA doivent être créées avec des composants hautement portables et réutilisables.
AEM détermine la structure du site aem-drives-site-structure
Le développeur ou la développeuse front-end doit se considérer comme responsable de la création d’une bibliothèque de composants SPA qui servent à créer l’application. Le développeur ou la développeuse front-end contrôle entièrement la structure interne des composants. Cependant, AEM contrôle toujours la structure du site..
Ce contrôle signifie que le développeur ou la développeuse front-end peut ajouter du contenu client avant ou après le point d’entrée des composants et peut également effectuer des appels tiers à l’intérieur du composant. Toutefois, le développeur ou la développeuse front-end ne contrôle pas totalement la manière dont les composants sont imbriqués, par exemple.
Rendu dynamique dynamic-rendering
La SPA ne devrait reposer que sur le rendu dynamique de contenu. Il s’agit du comportement par défaut attendu lorsqu’AEM récupère tous les enfants de la structure de contenu et en effectue le rendu.
Tout rendu explicite pointant vers un contenu spécifique est considéré comme un rendu statique. Bien qu’il soit pris en charge, il n’est pas compatible avec les fonctionnalités de création de contenu d’AEM. Cela va aussi à l’encontre du principe de portabilité.
Routage dynamique dynamic-routing
Comme pour le rendu, l’ensemble du routage devrait également être dynamique. Dans AEM, la SPA devrait toujours être responsable du routage. AEM l’écoute et s’appuie dessus pour l’extraction de contenu.
Tout routage statique va à l’encontre du principe de portabilité et limite l’auteur en n’étant pas compatible avec les fonctionnalités de création de contenu d’AEM. Par exemple, avec le routage statique, si la personne chargée de la création du contenu souhaite modifier un routage ou une page, elle doit demander à la personne chargée du développement front-end de le faire.
Archétype de projet AEM aem-project-archetype
Tout projet AEM doit utiliser l’archétype de projet AEM, qui prend en charge les projets SPA à l’aide de React ou d’Angular et utiliser le SDK de SPA.
Modèles de conception de SPA spa-design-models
Si les principes de développement des SPA dans AEM sont respectés, votre SPA est fonctionnelle avec toutes les fonctionnalités de création de contenu d’AEM prises en charge.
Il peut toutefois exister des cas dans lesquels cette fonctionnalité n’est pas tout à fait nécessaire. Le tableau suivant présente un aperçu des différents modèles de conception, leurs avantages et leurs inconvénients.
Migrer des SPA existantes vers AEM migrating-existing-spas-to-aem
En règle générale, si votre SPA respecte les principes de développement de SPA pour AEM, votre SPA fonctionne dans AEM et est modifiable à l’aide de l’éditeur de SPA d’AEM.
Respectez les étapes suivantes pour préparer l’utilisation de votre SPA existante dans AEM.
- Rendez vos composants JS modulaires. – Permettez leur rendu dans n’importe quel ordre, position et taille.
- Utilisez les conteneurs fournis par le SDK pour placer vos composants à l’écran. – AEM fournit un composant de système de paragraphe et de page que vous pouvez utiliser.
- Créez un composant AEM pour chaque composant JS. – Les composants AEM définissent la boîte de dialogue et la sortie JSON.
Instructions destinées aux développeurs front-end instructions-for-front-end-developers
Pour demander à un développeur ou à une développeuse front-end de créer une SPA pour AEM, la principale tâche consiste à convenir des composants et de leurs modèles JSON.
Vous trouverez ci-dessous un aperçu des étapes que doit suivre un développeur ou une développeuse front-end lors du développement d’une SPA pour AEM.
-
Convenir des composants et de leur modèle JSON
Les personnes chargées du développement front-end et celles chargées du développement back-end sur AEM doivent s’entendre sur les composants nécessaires et sur un modèle afin d’établir une correspondance individualisée entre les composants SPA et back-end.
Les composants d’AEM sont toujours nécessaires, notamment pour fournir des boîtes de dialogue d’édition et exporter le modèle de composant.
-
Dans les composants React, accéder au modèle via
this.props.cqModel
Une fois les composants définis et le modèle JSON en place, le développeur front-end est libre de développer la SPA et peut accéder simplement au modèle JSON via
this.props.cqModel
. -
Implémenter la méthode de
render()
du composantLe développeur ou la développeuse front-end implémente la méthode de
render()
à sa convenance et peut utiliser les champs de la propriétécqModel
. Cette méthode permet de générer le DOM et les fragments HTML qui sont insérés dans la page. Cette méthode est également la procédure standard de création d’une application dans React. -
Faire correspondre le composant au type de ressource AEM via
MapTo()
Le mappage stocke les classes de composants et est utilisé en interne par le composant
Container
fourni pour récupérer et instancier dynamiquement les composants en fonction du type de ressource donné.Ce mappage sert de « colle » entre le front-end et le back-end afin que l’éditeur sache à quels composants correspondent les composants de React.
Page
etResponsiveGrid
sont de bons exemples de classes qui étendent leContainer
de base. -
Définir le paramètre
EditConfig
du composant comme paramètre pourMapTo()
Ce paramètre est nécessaire pour indiquer à l’éditeur comment le composant doit être nommé tant qu’il n’a pas encore effectué de rendu ou qu’il n’a aucun rendu à effectuer.
-
Étendre la classe
Container
fournie pour les pages et les conteneursLes pages et les systèmes de paragraphes doivent étendre cette classe afin que la délégation aux composants internes fonctionne comme prévu.
-
Mettre en œuvre une solution de routage qui utilise l’API HTML5
History
Lorsque
ModelRouter
est activé, l’appel des fonctionspushState
etreplaceState
déclenche une requête auPageModelManager
pour récupérer un fragment absent du modèle.La version actuelle de
ModelRouter
ne prend en charge que l’utilisation d’URL pointant vers le chemin de ressource réel des points d’entrée du modèle Sling. Elle ne prend pas en charge l’utilisation d’URL de redirection ni d’alias.Le
ModelRouter
peut être désactivé ou configuré pour ignorer une liste d’expressions régulières.
Indépendance par rapport à AEM aem-agnostic
Ces blocs de code illustrent le fait que vos composants React et Angular n’ont besoin de rien qui soit spécifique à Adobe ou AEM.
- Tout ce qui se trouve à l’intérieur du composant JavaScript est indépendant d’AEM.
- Toutefois, ce qui est spécifique à AEM est que le composant JS doit être mappé à un composant AEM avec l’assistant MapTo.
L’assistant MapTo
est la « colle » qui permet de faire correspondre les composants back-end et front-end :
- Il indique au conteneur JS (ou système de paragraphes JS) quel composant JS est responsable du rendu de chacun des composants présents dans le fichier JSON.
- Il ajoute un attribut de données HTML au code HTML généré par le composant JS, de sorte que l’éditeur de SPA sache quelle boîte de dialogue afficher pour l’auteur lors de la modification du composant.
Pour plus d’informations sur l’utilisation de MapTo
et la création de SPA pour AEM en général, consultez le Guide de prise en main du framework choisi.
Architecture d’AEM et SPA aem-architecture-and-spas
L’architecture générale d’AEM, y compris les environnements de développement, de création et de publication, ne change pas lors de l’utilisation de SPA. Il est toutefois utile de comprendre comment le développement de SPA s’inscrit dans cette architecture.
-
Environnement de création
C’est dans cet environnement que la source de l’application SPA et celle du composant sont extraites.
- Le générateur clientlib NPM crée une bibliothèque cliente à partir du projet de SPA.
- Cette bibliothèque est utilisée par Maven et déployée par le module Maven Build avec le composant sur l’instance de création AEM.
-
Auteur AEM
Le contenu est créé sur l’auteur AEM, y compris les SPA de création.
Lorsqu’une SPA est modifiée à l’aide de l’éditeur de SPA sur l’environnement de création :
- La SPA demande le code HTML externe.
- Le fichier CSS est chargé.
- Le JavaScript de la SPA est chargé.
- Lorsque la SPA est exécutée, le fichier JSON est demandé, ce qui permet à l’application de créer le DOM de la page, y compris les attributs
cq-data
. - Les attributs
cq-data
permettent à l’éditeur de charger des informations de pages supplémentaires afin qu’il connaisse les configurations d’édition disponibles pour les composants.
-
Publication AEM
C’est là que le contenu créé et les bibliothèques compilées, y compris les artefacts d’application SPA, les bibliothèques clientes et les composants, sont publiés pour être utilisés par le public.
-
Dispatcher/réseau CDN
Le Dispatcher sert de calque de mise en cache d’AEM pour les visiteurs et visiteuses du site.
- Les requêtes sont traitées de la même manière que sur l’instance de création d’AEM. Toutefois, les informations de page ne sont pas demandées, car seul l’éditeur en a besoin.
- Le code JavaScript, CSS, JSON et HTML est mis en cache afin d’optimiser la page pour une diffusion rapide.
Étapes suivantes next-steps
- Prise en main des SPA dans AEM avec React présente comment créer une SPA de base pour fonctionner avec l’éditeur de SPA dans AEM avec React.
- La section Prise en main des SPA dans AEM avec Angular montre comment une SPA de base est créée pour fonctionner avec l’éditeur de SPA dans AEM avec Angular.
- La section Présentation de l’éditeur de SPA examine de plus près le modèle de communication entre AEM et la SPA.
- Le tutoriel Projet SPA WKND est un tutoriel détaillé qui met en œuvre un projet SPA simple dans AEM.
- La section Mappage d’un modèle dynamique sur un composant pour les SPA explique le mappage d’un modèle dynamique sur un composant et présente son fonctionnement au sein des SPA dans AEM.
- Le plan directeur SPA décrit en détail le fonctionnement du SDK de SPA pour AEM si vous souhaitez implémenter des SPA dans AEM pour un framework autre que React ou Angular. Ou si vous voulez simplement approfondir vos connaissances.