【问题标题】:CQ5 Remove Render-Blocking JavaScriptCQ5 移除阻止渲染的 JavaScript
【发布时间】:2015-01-26 20:35:27
【问题描述】:

我正在处理此文档以删除阻塞 js:

Remove Blocking JS

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

<cq:includeClientLib js="headlibs"/>

如何修改脚本标签,如:

<script async src="my.js">

所以我可以移除阻塞的 JS。

【问题讨论】:

    标签: java javascript css adobe aem


    【解决方案1】:

    cq:includeClientLib 没有任何选项可以执行此操作。你可以尝试使用com.day.cq.widget.HtmlLibraryManager接口来获取JS文件的路径,标签是a是这个接口的方便包装器。

    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");
      }
    

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

    【讨论】:

    • 如果以这种方式应用我们不再使用 对吗?
    • 是的,上面的代码完成了 cq:includeClientLib 标签所做的一切。您可以使用它来创建自定义 Tag ,这样代码就不会在您想要包含客户端库的每个地方重复。以上代码仅适用于JS!
    猜你喜欢
    • 2017-06-18
    • 2014-07-24
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多