使用Grails Asset-Pipeline将JavaScript放在底部

时间:2015-01-16 15:36:51

标签: javascript grails groovy asset-pipeline grails-2.0

使用Grails Resource插件,您可以使用这样的gsp布局:

<!DOCTYPE html>
<html>
<head>
    <g:layoutHead/>
    <r:layoutResources /> 
</head>
<body>
   <g:layoutBody/>


   <g:javascript library="jquery" plugin="jquery" /> 

   <r:layoutResources />

</body>

使用r:layoutResources标记,您可以指定资源应该包含在JQuery之后的页面底部,JQuery位于布局gsp的底部。

有没有办法对资产管道插件做同样的事情?在JQuery包含后,如何将资源放在文档事件的底部?

4 个答案:

答案 0 :(得分:4)

在你的布局文件中,输入:

<html>
<body>
....
<!-- Your layout scripts -->
<asset:javascript src="app.js"/>

<!-- Custom placeholder for page scripts -->
<g:ifPageProperty name="page.footScripts">
    <g:pageProperty name="page.footScripts" />
</g:ifPageProperty>

</body>
</html>

在你的页面(即index.gsp)中,把这个

<html>
<body>
...
...
</body>
</html>

<content tag="footScripts">
    <asset:javascript src="jqueryui/jquery-ui.min"/>
</content>

这样,您可以使用各个页面中定义的内容扩展布局。

Grails 3 documentation ( though the same in Grails 2 )

参见章节8.2.6 Sitemesh内容块

答案 1 :(得分:1)

我只是在.gsp或布局文件的底部添加行:

<asset:stylesheet src="xxx.css"/>
<asset:javascript src="xxx.js"/>

xxx.jsxxx.css可以包含用于加载更多内容的清单。

您将通过清单加载JQuery:

xxx.js

//= require jquery
//= require select2.min.js
//= require_self

答案 2 :(得分:0)

您可以使用<g:pageProperty/>标记解决此问题,无论您使用哪种插件(无论如何,我都像您一样使用 asset-pipeline 测试解决方案)。

解决方案的教程在这里:http://mythinkpond.com/2014/02/02/grails-adding-javascript-bottom-page/

答案 3 :(得分:0)

如果要在子脚本上添加多个脚本,可以像

一样进行

parent.gsp

的底部
<g:each in="${pageScript}">
    <asset:javascript src="${it.value}.js"/>
</g:each>

您的child.gsp

<g:set var="pageScript" value="['script1, script2']"/>