ClientLibraryFolder 类型的 embed[] 和 dependencies[] 有啥区别?

Posted

技术标签:

【中文标题】ClientLibraryFolder 类型的 embed[] 和 dependencies[] 有啥区别?【英文标题】:What is the difference between embed[] and dependencies[] for type ClientLibraryFolder?ClientLibraryFolder 类型的 embed[] 和 dependencies[] 有什么区别? 【发布时间】:2012-10-14 16:08:59 【问题描述】:

我曾多次尝试将多个类别交替添加到 embed[] 和 dependencies[] 中。但是我总是在网站上看到 javascript 的依赖解析错误。

另外,如何在像 embed[] 这样的多值条目中指定类别的顺序?有什么方法可以控制网站启动期间加载的 JavaScript 源的顺序?

【问题讨论】:

【参考方案1】:

categories 是要在其下发布 clientlib 的标识符列表。

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),clientlibs 文件夹将有一个文件“.content.xml”,该文件需要以下属性:

dependencies="[depB,depC]"

【讨论】:

虽然缺少一个细节:依赖是可传递的,而嵌入不是。示例:A 依赖于嵌入 C -> C+B 和 A 的 B。 A 嵌入 B 依赖于 C -> B+A 已加载,C 未加载。如果你想嵌入一些 CQ 库(请求一个 JS),这可能会很棘手,并且这些库依赖于其他 CQ 库。然后,您需要以正确的顺序嵌入所有这些。 我应该补充一点,categories 旨在从目录结构中抽象出来。因此,创建基本上模仿文件夹的类别标签是没有帮助的。【参考方案2】:

要检查嵌入所需的客户端库,您可以使用来自以下位置的 ClientLibs Optimizer Tool:https://adobe-consulting-services.github.io/acs-aem-tools/features/clientlibs-optimizer/index.html 它还为您提供了保留嵌入客户端库的顺序

【讨论】:

以上是关于ClientLibraryFolder 类型的 embed[] 和 dependencies[] 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

你真的了解JAVA中的泛型E、T、K、V吗?

为啥“数字”类型的 html 输入允许在字段中输入字母“e”?

将 2.0000000000000000000e+00 类型数转换为 int?

参数 'e' 隐含了一个 'any' 类型 React TypeScript

基本数据类型中的浮点类型

java中E,T,?的区别?