gpt4 book ai didi

Grails 布局资源相当于 asset-pipeline

转载 作者:行者123 更新时间:2023-12-02 09:51:04 26 4
gpt4 key购买 nike

我正在尝试使用 asset-pipeline plug-in 在 grails v2.3.1 中设置 SiteMesh 布局(v1.0.4),但我不确定如何处理在模板的特定位置包含 javascript 资源(就像使用 resources plugin 时使用 r:layoutResources 一样)。

示例布局 (grails-app/views/layouts/test.gsp):

<html>
<head>
<title><g:layoutTitle/></title>
<g:layoutHead/>
</head>
<body>
<div class="thecontent">
<g:layoutBody/>
</div>
<asset:javascript src="application.js"/>
<!-- WANT DECORATED PAGE RESOURCES TO BE INCLUDED HERE -->
</body>
</html>

示例 gsp (grails-app/views/test.gsp):

<html>
<head>
<meta name="layout" content="test"/>
<title>The Title</title>
<asset:stylesheet src="thispageonly.css"/>
</head>
<body>
<div id="helloworld">
Hello World
</div>
<asset:javascript src="thispageonly.js"/>
</body>
</html>

生成的装饰页面(忽略 Assets 管道捆绑/等)适用于样式表(因为它位于 head 中),但不适用于 javascript:

<html>
<head>
<meta name="layout" content="test"/>
<title>The Title</title>
<link rel="stylesheet" href="/assets/thispageonly.css?compile=false"/>
</head>
<body>
<div class="thecontent">
<div id="helloworld">
Hello World
</div>
<!-- *** NOT WHERE I WANT THIS *** -->
<script src="/assets/thispageonly.js?compile=false" type="text/javascript"></script>
</div>
<script src="/assets/application.js?compile=false" type="text/javascript"></script>
</body>
</html>

目前我可以让它工作的唯一方法是使用 g:applyLayout 和 g:pageProperty:

<!-- grails-app/views/layouts/test2.gsp -->
<html>
<head>
<title><g:layoutTitle/></title>
<g:layoutHead/>
</head>
<body>
<div class="thecontent">
<g:layoutBody/>
</div>
<asset:javascript src="application.js"/>
<g:pageProperty name="page.javascript"/>
</body>
</html>


<!-- grails-app/views/test2.gsp -->
<g:applyLayout name="test2">
<html>
<head>
<title>The Title</title>
<asset:stylesheet src="thispageonly.css"/>
</head>
<body>
<div id="helloworld">
Hello World
</div>
<content tag="javascript">
<asset:javascript src="thispageonly.js"/>
</content>
</body>
</html>
</g:applyLayout>

但是这种与元标记的背离似乎过于复杂(而且我不清楚文档不完善的 g:pageProperty 是否会在未来的升级中得到支持)。最好的长期方法是什么?

最佳答案

仅供引用:这对我来说效果很好,尽管有点难看。

<!-- grails-app/views/layouts/test2.gsp -->
<html>
<head>
<title><g:layoutTitle/></title>
<g:layoutHead/>
</head>
<body>
<div class="thecontent">
<g:layoutBody/>
</div>
<asset:javascript src="application.js"/>
<asset:deferredScripts/>
</body>
</html>

<!-- grails-app/views/test2.gsp -->
<g:applyLayout name="test2">
<html>
<head>
<title>The Title</title>
<asset:stylesheet src="thispageonly.css"/>
</head>
<body>
<div id="helloworld">
Hello World
</div>
<asset:script src="${assetPath(src: 'thispageonly.js')}" type="text/javascript" />
</body>
</html>
</g:applyLayout>

关于Grails 布局资源相当于 asset-pipeline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com