ClientLibraryFolder类型的embed []和dependencies []之间有什么区别?

exc*_*ion 21 adobe aem

我试图多次添加多个类别来交替嵌入[]和依赖[].但我总是在网站上看到JavaScript中的依赖项解析错误.

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

IT *_*mby 35

categories 是发布clientlib的标识符列表.

dependencies应该导致您的页面有额外的请求到其他 clientlibs(外部"订阅")

embed 应该将那些其他clientlib"聚合"到当前的clientlib(内部订阅)

两个属性都可以有多个值,CRXDE Lite界面允许更改值列表中的项目顺序.

鉴于Clientlibs:

  • / 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]"
Run Code Online (Sandbox Code Playgroud)

  • 但是缺少一个细节:依赖性是可传递的,而嵌入则不是.例子:A取决于B嵌入C - > C + B和A加载.依赖于C - > B + A的嵌入B被加载,C不加载.如果你想嵌入一些CQ库(请求一个单独的JS),这可能会很棘手,而这些库依赖于其他CQ库.然后,您需要按正确的顺序嵌入所有这些内容. (11认同)