Bibliotecas de clientes e os Componentes principais client-libraries
Os Componentes principais vêm com várias bibliotecas de clientes e oferecem a capacidade de incluir as suas.
Bibliotecas de clientes fornecidas provided
Os Componentes principais fornecem as seguintes bibliotecas de clientes prontas para uso.
- As clientlibs do site fornecem o comportamento funcional minimalista dos componentes que serão aplicados ao site.
- Elas atuam como ponto de partida para acelerar projetos, sendo as implementações incentivadas a estendê-las e personalizá-las para alcançar a aparência e a funcionalidade desejadas.
- As clientlibs do editor são aplicadas à caixa de diálogo de criação para garantir a funcionalidade e a aparência esperadas.
- As clientlibs do editorhook são aplicadas ao site quando carregadas no modo de edição.
- Elas contêm código JavaScript executado em eventos acionados pelo editor, facilitando a inicialização da funcionalidade dinâmica.
- Alguns componentes podem ter clientlibs adicionais específicas projetadas para uso em determinadas situações, como quando usadas junto com o Dynamic Media por exemplo.
Inclusão de Bibliotecas do cliente including
Há várias maneiras diferentes de incluir bibliotecas de clientes, dependendo do seu caso de uso. Veja a seguir exemplos de Trechos HTL para cada.
Uso padrão recomendado recommended-default-usage
Se não tiver tempo para investigar o que há de melhor em sua situação, inclua as bibliotecas de clientes colocando as seguintes linhas HTL dentro do elemento head
da página:
<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @
categories='wknd.base', defer=true}">
${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>
Isso incluirá o CSS e o JS na página head
, mas adicionando o atributo defer
às inclusões script
do JS, para que os navegadores aguardem o DOM estar pronto antes de executar seus scripts e, portanto, otimizar a velocidade de carregamento da página.
Uso básico basic-usage
A sintaxe básica para incluir JS e CSS de uma categoria de biblioteca do cliente, que gerará todos os elementos CSS link
e/ou elementos JS script
correspondentes, é a seguinte:
<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>
Para fazer o mesmo para várias categorias de bibliotecas de clientes ao mesmo tempo, uma matriz de cadeias de caracteres pode ser passada para o parâmetro categories
:
<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @
categories=['wknd.base', 'cq.foundation']}">
${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>
Somente CSS ou JS css-js-only
Frequentemente, é necessário colocar as inclusões de CSS no elemento HTML head
, e as do JS antes do fechamento do elemento body
.
Em head
, para incluir somente o CSS, e não o JS, use cssIncludes
:
<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
${clientlibs.cssIncludes @ context="unsafe"}
</sly>
Antes de body
fechar, para incluir somente o JS, e não o CSS, use jsIncludes
:
<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
${clientlibs.jsIncludes @ context="unsafe"}
</sly>
Atributos attributes
Para aplicar atributos aos elementos link
de CSS gerados e/ou aos elementos script
de JS, vários parâmetros são possíveis:
<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @
categories='wknd.base',
media='print',
async=true,
defer=true,
onload='console.log(\'loaded: \' + this.src)',
crossorigin='anonymous'}">
${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>
Atributos link
de CSS que podem ser passados para jsAndCssIncludes
e cssIncludes
:
media
: atributosscript
de JS de sequência de caracteres que podem ser passados parajsAndCssIncludes
ejsIncludes
:async
: booleanodefer
: booleanoonload
: sequência de caracterescrossorigin
: sequência de caracteres
Incorporação inlining
Em alguns casos, para otimização ou para email ou AMP, pode ser necessário embutir o CSS ou o JS na saída HTML.
Para embutir o CSS, cssInline
pode ser usado, nesse caso, você deve gravar o elemento style
ao redor:
<style type="text/css"
data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
${clientlibs.cssInline @ context="unsafe"}
</style>
Da mesma forma, para embutir o JS, jsInline
pode ser usado, e nesse caso, você deve gravar o elemento script
ao redor:
<script type="text/javascript"
data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
${clientlibs.jsInline @ context="unsafe"}
</script>
Carregamento de CSS e JavaScript sensíveis ao contexto context-aware-loading
O componente de Página também oferece suporte ao carregamento de CSS, JavaScript ou metatags com reconhecimento de contexto definido pelo desenvolvedor.
Isso é feito criando um recurso sensível ao contexto para com.adobe.cq.wcm.core.components.config.HtmlPageItemsConfig
usando a seguinte estrutura:
com.adobe.cq.wcm.core.components.config.HtmlPageItemsConfig
- prefixPath="/some/path"
+ item01
- element=["link"|"script"|"meta"]
- location=["header"|"footer"]
+ attributes
- attributeName01="attributeValue01"
- attributeName02="attributeValue02"
...
+ item02
...
...
Consulte a documentação técnica do componente de Página para mais informações.