クライアントライブラリとコアコンポーネント client-libraries

コアコンポーネントには多数のクライアントライブラリが付属しているほか、独自のクライアントライブラリを組み込むこともできます。

用意されているクライアントライブラリ provided

コアコンポーネントには、次のクライアントライブラリが標準で用意されています。

  • site clientlibs は、サイトに適用されるコンポーネントの最小限の機能的動作を提供します。
    • これらは、プロジェクトを高速化するための出発点となり、目的の外観と機能を実現するために実装の拡張とカスタマイズが推奨されます。
  • editor clientlibs は、オーサリングダイアログに適用されて、期待される機能と外観を実現します。
  • editorhook clientlibs は、編集モードで読み込まれたときにサイトに適用されます。
    • エディターでトリガーされたイベントで実行される JavaScript コードが含まれているので、動的機能を初期化しやすくなります。
  • コンポーネントによっては、特定の状況(例えば、Dynamic Media と併用する場合など)で使用されるように設計された特定の追加クライアントライブラリが含まれている場合があります。

クライアントライブラリを含める including

ユースケースに応じてクライアントライブラリを含める方法は多数あります。それぞれのサンプル HTL スニペットを含んだ例を以下に示します。

状況に何が最適かを調べる時間がない場合は、次の HTL 行をページ head 要素内に配置して、クライアントライブラリを含めます。

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

これにより、ページ head に CSS と JS の両方が含まれますが、JS script インクルードに defer 属性が追加されるので、ブラウザーは DOM は準備が完了するのを待ってスクリプトを実行し、ページの読み込み速度を最適化します。

基本的な使用方法 basic-usage

クライアントライブラリカテゴリの JS と CSS の両方を含める基本構文は、次のとおりです。この構文は、対応するすべての CSS link 要素または JS script 要素を生成します。

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

複数のクライアントライブラリカテゴリに対して、同じ処理を一度におこなうには、文字列の配列を categories パラメーターに渡します。

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

CSS または JS のみ css-js-only

HTML head 要素に CSS インクルードを配置し、body 要素を閉じる直前に JS インクルードを配置することがよくあります。

JS ではなく CSS のみを含めるには、headcssIncludes を使用します。

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

CSS ではなく JS のみを含めるには、body を閉じる前に jsIncludes を使用します。

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

属性 attributes

生成される CSS link 要素や JS script 要素に属性を適用するには、次のように多数のパラメーターを使用できます。

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

jsAndCssIncludes および cssIncludes に渡すことができる CSS link 属性:

  • mediajsAndCssIncludes および jsIncludes に渡すことができる文字列 JS script 属性:
  • async:ブール型
  • defer:ブール型
  • onload:文字列
  • crossorigin:文字列

インライン inlining

場合によっては、最適化用、またはメールまたは AMP 用として、CSS または JS を HTML の出力にインライン化する必要が出ることがあります。

CSS をインライン化するには、cssInline を使用できますが、その場合は前後に style 要素を記述する必要があります。

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

同様に、jsInline を使用して JS をインライン化できますが、前後に script 要素を記述する必要があります。

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

コンテキスト対応 CSS と JavaScript の読み込み context-aware-loading

ページコンポーネントでは、開発者定義のコンテキスト対応 CSS、JavaScript、メタタグの読み込みもサポートしています。

これをおこなうには、次の構造を使用して com.adobe.cq.wcm.core.components.config.HtmlPageItemsConfigコンテキスト対応リソースを作成します。

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

詳しくは、ページコンポーネントの技術ドキュメントを参照してください。

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