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

Put JavaScript at the Bottom with Grails Asset-Pipeline

借助 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 之后,它位于布局 gsp 的底部。

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

我只是在 .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

无论您使用什么插件,您都可以使用 <g:pageProperty/> 标签解决这个问题(无论如何,我像您一样使用 asset-pipeline 测试了该解决方案)。

此处提供解决方案教程:http://mythinkpond.com/2014/02/02/grails-adding-javascript-bottom-page/

在你的布局文件中,把这个:

<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 内容块

如果你想在你的子脚本上添加多个脚本,你可以这样做

你的底部 parent.gsp

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

你的child.gsp

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