Rivedi il modulo "ui.frontend" del progetto AEM full-stack aem-full-stack-ui-frontent
In questo capitolo esaminiamo lo sviluppo, la distribuzione e la distribuzione di artefatti front-end di un progetto AEM full-stack, concentrandoci sul modulo "ui.frontend" del progetto Sites WKND.
Obiettivi objective
- Comprendere la generazione e il flusso di implementazione di artefatti front-end in un progetto full-stack dell’AEM
- Esamina le configurazioni webpack del modulo
ui.frontend
del progetto full stack dell'AEM - Processo di generazione della libreria client AEM (nota anche come clientlibs)
Flusso di distribuzione front-end per progetti AEM full-stack e Creazione rapida di siti
Prerequisiti prerequisites
- Clona il progetto WKND Sites per AEM
- Ha generato e implementato in AEM as a Cloud Service il progetto WKND Sites dell’AEM clonato.
Per ulteriori dettagli, consulta il progetto del sito WKND dell’AEM README.md.
Flusso degli artefatti front-end del progetto full-stack dell’AEM flow-of-frontend-artifacts
Di seguito è riportata una rappresentazione di alto livello del flusso sviluppo, distribuzione e consegna degli artefatti front-end in un progetto AEM full-stack.
Durante la fase di sviluppo, le modifiche front-end come lo stile e il rebranding vengono eseguite aggiornando i file CSS e JS dalla cartella ui.frontend/src/main/webpack
. Quindi, durante la fase di creazione, il modulo-bundler webpack e il plug-in maven trasformano questi file in clientlibs AEM ottimizzati nel modulo ui.apps
.
Le modifiche front-end vengono distribuite nell'ambiente AEM as a Cloud Service durante l'esecuzione della pipeline Full-stack in Cloud Manager.
Le risorse front-end vengono distribuite ai browser web tramite percorsi URI che iniziano con /etc.clientlibs/
e sono in genere memorizzate nella cache in AEM Dispatcher e CDN.
Verifica configurazioni webpack nel progetto WKND Sites development-frontend-webpack-clientlib
-
Sono disponibili tre file di configurazione webpack utilizzati per raggruppare le risorse front-end dei siti WKND.
webpack.common
- Contiene la configurazione common per istruire il bundling e l'ottimizzazione delle risorse WKND. La proprietà output indica dove emettere i file consolidati (noti anche come bundle di JavaScript, ma da non confondere con i bundle OSGi AEM) che crea. Il nome predefinito èclientlib-site/js/[name].bundle.js
.
code language-javascript ... output: { filename: 'clientlib-site/js/[name].bundle.js', path: path.resolve(__dirname, 'dist') } ...
webpack.dev.js
contiene la configurazione development per webpack-dev-server e punta al modello di HTML da utilizzare. Contiene inoltre una configurazione proxy a un'istanza AEM in esecuzione sulocalhost:4502
.
code language-javascript ... devServer: { proxy: [{ context: ['/content', '/etc.clientlibs', '/libs'], target: 'http://localhost:4502', }], ...
webpack.prod.js
contiene la configurazione production e utilizza i plug-in per trasformare i file di sviluppo in bundle ottimizzati.
code language-javascript ... module.exports = merge(common, { mode: 'production', optimization: { minimize: true, minimizer: [ new TerserPlugin(), new CssMinimizerPlugin({ ...}) } ...
-
Le risorse in bundle vengono spostate nel modulo
ui.apps
utilizzando il plug-in aem-clientlib-generator, utilizzando la configurazione gestita nel fileclientlib.config.js
.
...
const BUILD_DIR = path.join(__dirname, 'dist');
const CLIENTLIB_DIR = path.join(
__dirname,
'..',
'ui.apps',
'src',
'main',
'content',
'jcr_root',
'apps',
'wknd',
'clientlibs'
);
...
- frontend-maven-plugin da
ui.frontend/pom.xml
orchestra la generazione di webpack bundling e clientlib durante la compilazione del progetto AEM.
$ mvn clean install -PautoInstallSinglePackage
Implementazione in AEM as a Cloud Service deployment-frontend-aemaacs
La pipeline full stack distribuisce queste modifiche in un ambiente AEM as a Cloud Service.
Consegna da AEM as a Cloud Service delivery-frontend-aemaacs
Le risorse front-end distribuite tramite la pipeline full-stack vengono distribuite dal sito AEM ai browser Web come /etc.clientlibs
file. Puoi verificare questo fatto visitando il sito WKND ospitato pubblicamente e visualizzando l'origine della pagina Web.
....
<link rel="stylesheet" href="/etc.clientlibs/wknd/clientlibs/clientlib-site.lc-181cd4102f7f49aa30eea548a7715c31-lc.min.css" type="text/css">
...
<script async src="/etc.clientlibs/wknd/clientlibs/clientlib-site.lc-d4e7c03fe5c6a405a23b3ca1cc3dcd3d-lc.min.js"></script>
....
Congratulazioni. congratulations
Congratulazioni, hai esaminato il modulo ui.frontend del progetto full stack
Passaggi successivi next-steps
Nel prossimo capitolo, Aggiorna progetto per utilizzare la pipeline front-end, verrà aggiornato il progetto WKND Sites dell'AEM per abilitarlo per il contratto della pipeline front-end.