Grails 使用资源控制 JavaScript 位置



>我在"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&hellip;"/></div>
    <g:javascript library="application"/>
    <r:layoutResources />
</body>

结果HTML是grails将两个js文件连接成一个,并将脚本标签放在末尾。

.
.
.    
<div id="spinner" class="spinner" style="display:none;">Loading&hellip;</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'
}

这将禁用此模块中所有资源的捆绑

最新更新