CQ5删除渲染块JavaScript

CQ5删除渲染块JavaScript,java,javascript,css,adobe,aem,Java,Javascript,Css,Adobe,Aem,我正在编写此文档以删除阻塞js: 但是,对于CQ5,我们通过以下方式包括js: <cq:includeClientLib js="headlibs"/> 如何修改脚本标记,如: <script async src="my.js"> 所以我可以删除阻塞JS 没有任何选项来执行此操作。您可以尝试使用该接口获取JS文件的路径,该标记是该接口的一个方便的包装器 com.day.cq.widget.HtmlLibraryManager clientlibmanager

我正在编写此文档以删除阻塞js:

但是,对于CQ5,我们通过以下方式包括js:

<cq:includeClientLib js="headlibs"/>

如何修改脚本标记,如:

<script async src="my.js">

所以我可以删除阻塞JS

没有任何选项来执行此操作。您可以尝试使用该接口获取JS文件的路径,该标记是该接口的一个方便的包装器

com.day.cq.widget.HtmlLibraryManager clientlibmanager = sling.getService(com.day.cq.widget.HtmlLibraryManager.class);
if(clientlibmanager != null)
{ 
    String[] categoryArray = {"headlibs"};
    java.util.Collection<com.day.cq.widget.ClientLibrary> libs = clientlibmanager.getLibraries(catArray,com.day.cq.widget.LibraryType.JS,false,false);
    for(com.day.cq.widget.ClientLibrary lib : libs) {
        out.write("<script async type=\"text/javascript\" src=\""+lib.getIncludePath(com.day.cq.widget.LibraryType.JS)+"\"></script>");
    }

} else {
         out.write("clientlib manager is null");
  }
com.day.cq.widget.htmlibrarymanager clientlibmanager=sling.getService(com.day.cq.widget.htmlibrarymanager.class);
if(clientlibmanager!=null)
{ 
字符串[]categoryArray={“headlibs”};
java.util.Collection libs=clientlibmanager.getLibraries(catArray,com.day.cq.widget.LibraryType.JS,false,false);
for(com.day.cq.widget.clientlib:libs){
请写出(“”);
}
}否则{
out.write(“clientlib管理器为空”);
}

方法
getIncludePath()
还需要一个额外的参数minified(布尔值)来提供缩小文件的路径。

如果采用这种方式,我们就不再使用了,对吗?是的,上面的代码执行cq:includeClientLib标记所执行的操作。您可以使用它来创建自定义标记,这样代码就不会在您希望包含clientlibs的每个位置重复。以上代码仅适用于JS!。