使用 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.js
和 xxx.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']"/>
借助 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.js
和 xxx.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']"/>