"type ClientLibraryFolder中embed[]和dependencies[]有什么区别?"

23
我曾多次尝试在embed[]和dependencies[]中互换地添加多个类别。但每次在网站上使用JavaScript时,总是出现依赖项解析错误。
此外,我如何指定多值输入(例如embed[])中的类别顺序?在网站启动期间加载JavaScript源代码时,是否有任何方法可以控制它们的顺序?
2个回答

36

categories 是发布客户端库的标识符列表。

dependencies 应该导致您的页面向其他客户端库(外部“订阅”)发出额外的请求。

embed 应该将这些其他客户端库“聚合”到当前客户端库中(内部订阅)。

这两个属性都可以有多个值,CRXDE Lite 接口允许更改值列表中项目的顺序。

给定客户端库:

  • /etc/clientlibs/depA categories=["depA"]
  • /etc/clientlibs/depB categories=["depB"]
  • /etc/clientlibs/depC categories=["depC"]
  • /etc/clientlibs/useA categories=["useA"], dependencies=["depA", "depB"]
  • /etc/clientlibs/useB categories=["useB"], embed=["depB", "depC"]

如果页面使用"useA" <cq:includeClientLib categories="useA"/>,那么 HTML 应该请求 depA、depB、useA(通过它们适当的 URL,即 /etc/clientlibs/depA.css)。

如果页面使用"useB" <cq:includeClientLib categories="useB"/>,那么 HTML 应该只请求 useB。 /etc/clientlibs/useB.css 的内容将是 depB、depC、useB 内容的串联。

位于 {localhost} /system/console/configMgr/com.day.cq.widget.impl.HtmlLibraryManagerImpl 的库管理器具有调试配置,以确定请求是否实际连接。这在http://dev.day.com/docs/en/cq/current/deploying/configuring_osgi.html#par_variable_18 中有所记录。

要定义多个依赖项(假设您正在使用 Maven 从文件系统构建并安装到 CQ5),客户端库文件夹将具有需要以下属性的“.content.xml”文件:

dependencies="[depB,depC]"

12
然而,有一个细节尚未说明:依赖是可传递的,嵌入不是。例如:A 依赖于 B,B 嵌入了 C -> 加载 C+B 和 A。A 嵌入了 B,B 依赖于 C -> 加载 B+A,C 不被加载。如果您想嵌入一些 CQ 库(以请求单个 JS),并且这些库依赖于其他 CQ 库,则可能会很棘手。然后,您需要按正确的顺序嵌入它们全部。 - Romain F.
我应该补充说明categories旨在抽象出目录结构。因此,创建基本上模仿文件夹的类别标签是没有帮助的。 - IT Gumby

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接