Exposition et intégration avec un iframe standard
La première étape de ce processus consiste à créer une nouvelle application Jutro, puis à l'adapter en tant que module micro front-end. Ensuite, vous pouvez utiliser ce nouveau module micro front-end au sein d'une autre application Jutro. Dans notre exemple, nous créons une deuxième application Jutro à l'aide de la CLI Jutro qui utilise ensuite le module micro front-end nouvellement créé.
Étape 1 : Installer le package de micro front-ends
Procédez à l'instanciation d'une nouvelle application Jutro ou modifiez une application existante basée sur Jutro de façon à ce qu'elle corresponde au micro front-end que vous intégrez.
Dans votre application basée sur Jutro, installez le package @jutro/micro-frontends afin d'avoir accès aux fonctionnalités du micro front-end :
npm i --save @jutro/micro-frontends@<your-jutro-version>
@jutro/components.La dépendance @jutro/auth est désormais facultative pour les packages
@jutro/router et @jutro/components .
Cependant, @jutro/micro-frontends package nécessite que
@jutro/auth soit ajouté aux dépendances de votre application pour être utilisé.
Étape 2 : Exposer une application Jutro en tant que micro front-end
Après avoir installé le package micro-frontend, suivez ces étapes pour convertir l'application autonome en un module micro front-end que vous pouvez intégrer dans une application shell. Bien qu'elle ait été convertie en module micro front-end, l'application continue de fonctionner en mode autonome.
-
Dans le référentiel du module micro front-end, assurez-vous que les fichiers
src/indexAsync.jsetsrc/startApp.jssont présents et qu'ils ne contiennent pas de conflits git. Si les fichiers ne sont pas présents, créez-les manuellement. Ajoutez ce qui suit àsrc/indexAsync.js:src/indexAsync.jsimport('./startApp').then(({ startApp }) => startApp()); -
Dans
src/startApp.js, remplacez l'élémentimportde la fonctionstartpar@jutro/micro-frontends.src/startApp.js// Replace the start function from @jutro/app
import { start } from '@jutro/micro-frontends';
import messages from './app/App.messages';
/* ... */Vous devez appeler la fonction
startdu micro front-end dans la fonctionstartApp:export const startApp = (mfeData) => {
start(Jutro, {
appName: messages.appName,
appDescription: messages.appDescription,
mfeData,
});
}; -
Create a file at root level (next to
package.json) and name itoverrides.config.js. Configure the micro frontend exposure in that file:module.exports = {
webpack: {
moduleFederation: {
exposes: 'jutro-app',
},
},
};exposes- Specifies list of entries which should be exposed as federated modules. Refer to the official webpack module federation docs for more info.name: nom du champ d'application du module micro front-end dans webpack. Ce nom doit être unique parmi les modules micro front-end d'une même application shell.
exposesto the exact valuejutro-app, it uses your entire app assuming the app is a standard Jutro app based on the template. This is the same as:You can provide your own config, if you are exposing to micro frontend in some other way. The stringexposes: {
'./startApp': './src/startApp',
},
filename: 'remoteEntry.[contenthash].js','./startApp'cannot be changed to anything else. TheMicroFrontendcomponent in the shell app uses this name as a hardcoded value.{
exposes: {
'./startApp': './src/paymentAppLauncher',
},
filename: 'secure.js',
}-
shared: point d'entrée pour remplacer ou étendre les bibliothèques partagées. Reçoit la configuration de bibliothèque par défaut et attend une configuration de bibliothèque partagée.Reportez-vous à la documentation officielle sur la fédération de modules Webpack pour en savoir plus.
Warning: Dénomination uniqueSi vous prévoyez d’importer plusieurs micro front-ends dans votre application shell, donnez à chaque micro front-end un élément
nameunique dans les configurations webpack correspondantes. Cette approche empêche webpack de créer un conflit de ressources pour deux modules micro front-end. -
Démarrez votre application :
npm i
PORT=3001 npm run start
Étape 3 : Intégrer un micro front-end dans une application shell
Pour intégrer un module micro front-end à l'aide de l'iframe HTML standard, utilisez la balise <iframe> et ajoutez l'URL du module micro front-end comme indiqué dans l'exemple, où <MICRO_FRONTEND_URL> représente l'URL du module micro front-end. De plus, suivez les instructions pour développer et déployer votre application.
Content-Security-Policy doit inclure une directive autorisant l'intégration à partir d'un domaine parent spécifique. Au lieu d'une valeur fixe, elle doit refléter le domaine destiné à intégrer le module micro front-end (par exemple, frame-ancestors https://*.url.myportal.com). Lors de la promotion en pré-production et production à l'aide de Jutro Web Apps, l'ajout du domaine de l'application shell à la section "Allowed CORS origins" génère automatiquement l'en-tête Content-Security-Policy nécessaire. En outre, vous pouvez définir manuellement l'en-tête dans les remplacements d'en-têtes de réponse.<html>
<head>
<title>Jutro SDK shell</title>
</head>
<body>
<h1>SAMPLE PAGE TITLE</h1>
<div
id="micro-app-container"
style="width: 100vw; height: 100vh">
<iframe
src="<MICRO_FRONTEND_URL>"
style="width: 100%; height: 100%"></iframe>
</div>
</body>
</html>