>我在"ApplicationResources"中添加了新的Javascript库:
jquerymobile{
resource url:'css/jquery.mobile-1.3.2.css'
resource url:'js/jquery.mobile/jquery.js'
resource url:'js/jquery.mobile/jquery.mobile-1.3.2.js'
}
比我在main.gsp中使用了这个库:
<g:javascript library="jquerymobile"/>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<g:layoutBody/>
<div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading…"/></div>
<g:javascript library="application"/>
<r:layoutResources />
</body>
结果HTML是grails将两个js文件连接成一个,并将脚本标签放在末尾。
.
.
.
<div id="spinner" class="spinner" style="display:none;">Loading…</div>
<script src="/Tiv2/static/bundle-bundle_jquerymobile_defer.js" type="text/javascript" ></script>
<script src="/Tiv2/static/js/application.js" type="text/javascript" ></script>
</body>
</html>
这会导致页面中的不良行为。单击链接时,我可以看到浏览器中的地址栏已更改,但页面未刷新并停留在单击链接的当前页面上。只有在手动刷新页面 (F5) 后,浏览器才会加载链接的页面。
我尝试使用常规标签,一切正常。如何防止 Grails 将 js 文件合并为一个?
谢谢
在声明资源时,您可能希望使用 exclude 参数,以便捆绑映射器不会运行。
jquerymobile{
resource url:'css/jquery.mobile-1.3.2.css', exclude: 'bundle'
resource url:'js/jquery.mobile/jquery.js', exclude: 'bundle'
resource url:'js/jquery.mobile/jquery.mobile-1.3.2.js', exclude: 'bundle'
}
文档涵盖了这一点,并且非常好。你应该总是从那里开始。
另一种选择是
jquerymobile{
defaultBundle false
resource url:'css/jquery.mobile-1.3.2.css'
resource url:'js/jquery.mobile/jquery.js'
resource url:'js/jquery.mobile/jquery.mobile-1.3.2.js'
}
这将禁用此模块中所有资源的捆绑