Grails使用资源控制javascript位置

时间:2013-10-03 16:08:43

标签: javascript jquery grails

我已将新的Javascript库添加到“ApplicationResources”:

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文件合并为一个?

由于

2 个答案:

答案 0 :(得分:2)

您需要在声明资源时使用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'
}

documentation涵盖了这一点并且相当不错。你应该总是从那里开始。

答案 1 :(得分:2)

另一种选择是

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'
}

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