Arquitetura do projeto
Pastas principais
text
blocks/
<block>/<block>.js
<block>/<block>.css
scripts/
aem.js
scripts.js
delayed.js
styles/
styles.css
lazy-styles.css
fonts.cssPapel de scripts/scripts.js
scripts/scripts.js é a entrada principal do front-end. Ele:
- decora ícones e estrutura global;
- cria auto-blocks;
- decora seções;
- decora blocks encontrados no HTML;
- transforma links formatados em botões;
- controla o carregamento em fases.
Três fases de carregamento
1. Eager
Carrega o que é crítico para o primeiro render:
- template e theme;
- decoração do
main; - primeira section;
- imagens críticas;
- fontes em alguns cenários.
2. Lazy
Carrega o restante da página:
- header;
- footer;
- sections restantes;
lazy-styles.css.
3. Delayed
Carrega o que pode esperar:
scripts/delayed.js.
Fluxo da página
text
loadPage()
|
+-- loadEager()
|
+-- loadLazy()
|
+-- loadDelayed()Auto-blocks atuais
Hoje o projeto cria automaticamente:
hero, quando encontrapictureantes doh1;fragment, quando encontra links para/fragments/.
Como um block entra em cena
text
HTML autorado chega no main
|
v
decorateSections() marca seções
|
v
decorateBlocks() identifica classes de blocks
|
v
import dinâmico do JS/CSS do block
|
v
decorate(block) transforma o DOMRelação entre CSS global e CSS de block
styles/styles.css: base visual e regras críticas.styles/lazy-styles.css: estilos não críticos.blocks/<nome>/<nome>.css: estilo específico do componente.
Fragmentos estruturais
headerefooterusam metadata para descobrir o caminho do conteúdo.fragmentbusca.plain.html, reprocessa o conteúdo e reaplica o mesmo pipeline de decoração.
Como ler o projeto
Se você quiser entender um block de ponta a ponta, a ordem mais útil é:
- olhar o HTML autorado;
- ler o
decorate()do block; - ver o CSS do block;
- testar a página em
localhost:3000.