我需要在'js'文件夹中缩小所有js文件(使用Adobe Experience Manager),该文件夹也包含'angular.min.js'。
尝试这样做时,它会在chrome中抛出错误
拒绝执行脚本'angular.min.js',因为它的MIME类型('text / html')不可执行,并且启用了严格的MIME类型检查。
我该如何解决这个问题?
答案 0 :(得分:3)
我建议您将Angular等第三方库与您自己的客户端库分开。因为您通常不想缩小这些第三方库,但您确实希望缩小自己的客户端库。
示例:
etc/
├── clientlibs/
| └── myproject/
| └── vendor/
| └── angular/
| ├── angular.min.js
| ├── .content.xml
| └── js.txt
└── designs/
└── myproject/
└── myclientlib/
├── js/
| └── myclientlib.js
├── .content.xml
└── js.txt
然后您可以使用以下clientlib定义:
/etc/clientlibs/myproject/vendor/angular/.content.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:ClientLibraryFolder"
categories="[myproject.angular]"
jsProcessor="[default:none]"/>
jsProcessor="[default:none]"
禁用缩小。
/etc/designs/myproject/myclientlib/.content.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:ClientLibraryFolder"
categories="[myproject.myclientlib]"
jsProcessor="[min:gcc]"/>
jsProcessor="[min:gcc]"
可以通过Googles Closure Compiler进行缩小。
您可以轻松地在HTL(以前的Sightly)模板中使用这两个clientlib:
<sly data-sly-use.clientlib="/libs/granite/sightly/templates/clientlib.html">
<sly data-sly-call="${clientlib.js @ categories='myproject.angular'}"/>
<sly data-sly-call="${clientlib.js @ categories='myproject.myclientlib'}"/>
</sly>
注意:您可以自由选择clientlib类别名称myproject.angular
和myproject.myclientlib
。您不必在我的示例中使用这些名称。但我会建议使用某种类型的命名空间,如myproject
。