Le estensioni dell’interfaccia utente dell’AEM sono app specializzate per App Builder, basate su React e utilizzano Spettro di reazione Framework interfaccia utente.
Per definire dove e come viene visualizzata l'estensione dell'interfaccia utente AEM, sono necessarie due configurazioni nell'app App Builder dell'estensione: il routing dell'app e la registrazione dell'estensione.
Dell'estensione App.js
dichiara il Router React che include una route di indice che registra l’estensione nell’interfaccia utente dell’AEM.
La route dell'indice viene richiamata al caricamento iniziale dell'interfaccia utente AEM e la destinazione di questa route definisce il modo in cui l'estensione viene esposta nella console.
./src/aem-ui-extension/web-src/src/components/App.js
import ExtensionRegistration from "./ExtensionRegistration"
...
function App(props) {
return (
<Router>
<ErrorBoundary onError={onError} FallbackComponent={fallbackComponent}>
<Routes>
{/* The index route maps to the extension registration */}
<Route index element={<ExtensionRegistration />} />
...
</Routes>
</ErrorBoundary>
</Router>
)
...
}
ExtensionRegistration.js
deve essere caricato immediatamente tramite la route di indice dell'estensione e agisce sul punto di registrazione dell'estensione.
In base al modello di estensione dell’interfaccia utente AEM selezionato quando inizializzazione dell'estensione app Builder, sono supportati diversi punti di estensione.
Le estensioni dell’interfaccia utente AEM possono eseguire una logica personalizzata per limitare gli ambienti AEM in cui viene visualizzata l’estensione. Questo controllo viene eseguito prima del register
chiama in ExtensionRegistration
e restituisce immediatamente se l’estensione non deve essere visualizzata.
Il contesto disponibile per questo controllo è limitato:
I controlli più comuni per il caricamento di un’estensione sono:
new URLSearchParams(window.location.search).get('repo')
) per determinare se l’estensione deve essere caricata.
L’esempio seguente illustra come limitare l’estensione a tutti gli ambienti nel programma p12345
.
./src/aem-cf-console-admin-1/web-src/src/components/ExtensionRegistration.js
function ExtensionRegistration() {
const PROGRAM_ID = 'p12345';
// Get the current AEM Host (author-pXXX-eYYY.adobeaemcloud.com) the extension is loading on
const aemHost = new URLSearchParams(window.location.search).get('repo');
// Create a check to determine if the current AEM host matches the AEM program that uses this extension
const aemHostRegex = new RegExp(`^author-${PROGRAM_ID}-e[\\d]+\\.adobeaemcloud\\.com$`)
// Disable the extension if the Cloud Manager Program Id doesn't match the regex.
if (!aemHostRegex.test(aemHost)) {
return; // Skip extension registration if the environment is not in program p12345.
}
// Else, continue initializing the extension
const init = async () => { .. };
init().catch(console.error);
}