Klientbibliotek och kärnkomponenter client-libraries

Core Components har ett antal klientbibliotek och ger möjlighet att inkludera egna.

Tillhandahållna klientbibliotek provided

Core Components innehåller följande klientbibliotek som är färdiga.

  • The webbplats clientlibs ger det minimala funktionsbeteendet hos de komponenter som ska användas på platsen.
    • De fungerar som en startpunkt för att snabba upp projekt, och implementeringarna uppmuntras att utöka och anpassa dem för att uppnå önskat utseende och önskad funktionalitet.
  • The redigerare clientlibs används i redigeringsdialogrutan för att säkerställa dess förväntade funktioner och utseende.
  • The editorkrok Klientlibs används på platsen när den läses in i redigeringsläge.
    • De innehåller JavaScript-kod som körs på händelser som utlöses av redigerare, vilket underlättar initieringen av dynamiska funktioner.
  • Vissa komponenter kan ha särskilda extra klientlibs som är utformade för användning i särskilda situationer, som när de används tillsammans med Dynamic Media till exempel.

Inkluderar klientbibliotek including

Det finns flera olika sätt att inkludera klientbibliotek beroende på ditt användningssätt. Följande är exempel med exempel HTML-kodfragment for each.

Rekommenderad standardanvändning recommended-default-usage

Om du inte har tid att undersöka vad som är bäst i din situation kan du inkludera dina klientbibliotek genom att placera följande HTML-rader på sidan head element:

<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @
    categories='wknd.base', defer=true}">
    ${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>

Detta inkluderar både CSS och JS på sidan head, men lägger till defer attribut till din JS script inkluderar, så att webbläsarna väntar på att DOM ska vara klar innan skripten körs och därför optimerar sidans inläsningshastighet.

Grundläggande användning basic-usage

Den grundläggande syntaxen som inkluderar både JS och CSS för en klientbibliotekskategori, som genererar alla motsvarande CSS link element och/eller JS script -element, enligt följande:

<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
    ${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>

Om du vill göra samma sak för flera klientbibliotekskategorier samtidigt kan en array med strängar skickas till categories parameter:

<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @
    categories=['wknd.base', 'cq.foundation']}">
    ${clientlibs.jsAndCssIncludes @ context="unsafe"}
</sly>

Endast CSS eller JS css-js-only

Ofta vill man placera CSS-inkluderingarna i HTML head -elementet och JS-elementet innehåller precis före stängningen av body -element.

I head, som bara innehåller CSS, och inte JS, använder du cssIncludes:

<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
    ${clientlibs.cssIncludes @ context="unsafe"}
</sly>

Före body closing, to include only the JS, and not the CSS, use jsIncludes:

<sly data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
    ${clientlibs.jsIncludes @ context="unsafe"}
</sly>

Attribut attributes

Tillämpa attribut på den genererade CSS:en link element och/eller JS script -element kan du ange ett antal parametrar:

<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>

CSS link attribut som kan skickas till jsAndCssIncludes och cssIncludes:

  • media: sträng-JS script attribut som kan skickas till jsAndCssIncludes och jsIncludes:
  • async: boolesk
  • defer: boolesk
  • onload: string
  • crossorigin: string

Inledande inlining

I vissa fall, antingen för optimering eller för e-post eller AMP, det kan krävas att CSS eller JS infogas i utdata från HTML.

Om du vill infoga CSS:en cssInline kan användas, och då måste du skriva den omgivande style element:

<style type="text/css"
    data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
    ${clientlibs.cssInline @ context="unsafe"}
</style>

På samma sätt gäller att om du vill infoga JS, jsInline kan användas, och då måste du skriva den omgivande script element:

<script type="text/javascript"
    data-sly-use.clientlibs="${'com.adobe.cq.wcm.core.components.models.ClientLibraries' @ categories='wknd.base'}">
    ${clientlibs.jsInline @ context="unsafe"}
</script>

Läsa in sammanhangsberoende CSS och JavaScript context-aware-loading

The Sidkomponent har även stöd för inläsning av utvecklardefinierade sammanhangsberoende CSS-, JavaScript- eller metataggar.

Detta görs genom att skapa en kontextmedveten resurs for com.adobe.cq.wcm.core.components.config.HtmlPageItemsConfig med följande struktur:

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
        ...
    ...

Mer information finns i den tekniska dokumentationen för sidkomponenten.

recommendation-more-help
d2be9096-a81e-404b-9952-d8925af7219c