Adobe CQ / AEM客户端Lib通道属性与cq:includeClientLib标记的交互

时间:2013-09-12 22:38:20

标签: jsp adobe cq5 aem

我正在努力提高adobe cq中的网页效果,我看到了各种网站(12),其中提到了频道属性 CQ:ClientLibraryFolder

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

的类别属性

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

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

当我添加!touch 作为 cmpB 频道属性时,将Chrome中的userAgent覆盖为iPhone , cmpB 的css仍然连接在一起。

  1. localhost:4502 / libs / cq / ui / content / dumplibs.html验证渠道属性设置为!touch
  2. 我已通过在 etc / clientlibs / foundation / librarymanager / DefaultChannelDetector.js
  3. 中添加console.log确认当前频道触摸
  4. 在url中加载clientlibs.css时添加?debug = true确认包含两个clientlibs的css
  5. 我想使用channels属性在给定某些用例的情况下逐步淘汰某些css(以及最终js)文件,同时不会过多地使用额外的逻辑过度复杂标记,正如文档模糊地暗示的那样。我的目标是将我的最终结果作为单个css文件(通过Config Manager中的Day CQ HTML Library Manager缩小并进行gzip压缩(server / system / console / configMgr)。

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

1 个答案:

答案 0 :(得分:1)

必须在clientlib节点上设置channels属性。如果你想要特定频道的特殊css / js,你需要创建至少2个clientlibs:

  1. 第一个clientlib会有categories=[cmps.all]
  2. 第二个clientlib会有categories=[cmps.all]channels=[!touch]
  3. 第一个将始终为cmps.all加载,而第二个仅为非触摸通道加载。