【问题标题】:Adobe CQ / AEM Client Lib channel property interaction with cq:includeClientLib tagAdobe CQ/AEM Client Lib 通道属性与 cq:includeClientLib 标签的交互
【发布时间】:2013-09-12 22:38:19
【问题描述】:

我正在努力提高 adobe cq 中的页面性能,并且我看到了各种网站(12),其中提到了 cq 类型的节点的 channels 属性: ClientLibraryFolder

我设置了一个包含 2 个组件(cmpAcmpB)的小示例。两者都具有 cmps.cmpcategories 值,并且位于 apps 目录中。然后,我在 etc 文件夹中创建了另一个类型为 cq:ClientLibraryFolder 的节点,该文件夹的嵌入属性为 cmps.cmp 和值为 cmps.all

的类别属性

在我看来,我有以下内容,这会导致来自各自客户端 lib 文件夹中的两个组件 css 的连接 css 文件。

<cq:includeClientLib css="cmps.all" />

当我将 !touch 添加为 cmpBchannels 属性时,然后将 chrome 中的 userAgent 覆盖到 iPhone , cmpB 的 css 仍然是串联的。

  1. localhost:4502/libs/cq/ui/content/dumplibs.html 验证 channels 属性设置为 !touch
  2. 我通过在 etc/clientlibs/foundation/librarymanager/DefaultChannelDetector.js 中添加一个 console.log 来确认当前频道是 touch
  3. 在 url 中加载 clientlibs.css 时添加 ?debug=true 可确认包含两个 clientlibs 中的 css

在给定特定用例的情况下,我想使用 channels 属性逐步淘汰某些 css(最终是 js)文件,同时又不会像文档模糊暗示的那样使用额外的逻辑使标记过于复杂。我的目标是我的最终结果是单个 css 文件(通过配置管理器(服务器/系统/控制台/configMgr)中的 Day CQ HTML 库管理器进行压缩和压缩。

我是否错误地使用了频道属性?它甚至意味着以我使用它的方式使用吗?任何见解将不胜感激。

【问题讨论】:

    标签: jsp adobe aem


    【解决方案1】:

    channels 属性必须在 clientlib 节点上设置。如果您想为特定频道提供特殊的 css/js,则需要创建至少 2 个客户端库:

    1. 第一个客户端库将有categories=[cmps.all]
    2. 第二个客户端库将具有categories=[cmps.all]channels=[!touch]

    第一个总是为 cmps.all 加载,而第二个只会为非触摸通道加载。

    【讨论】:

    • 谢谢Kaiser,我把它设置在子clientlib节点上,嵌入节点无论如何都把它们都捡起来了。对于其他用户,我当前的设置是 cmpA,类别=[cmps.cmpA] cmpB,类别=[cmps.cmpB] global,类别=[cmps.all],embed=[cmps.cmpA] touch,类别=[cmps. all], channels=[touch], embed=[cmps.cmpB] 然后 将完全加载我需要的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2014-07-24
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2014-08-24
    • 2019-02-23
    相关资源
    最近更新 更多