使用Asset Pipeline插件在Grails中生成特定于视图的JavaScript

使用Asset Pipeline插件在Grails中生成特定于视图的JavaScript,javascript,grails,asset-pipeline,Javascript,Grails,Asset Pipeline,我使用布局main.gsp渲染视图 在main.gsp中,我指定用于JavaScript的清单文件: <asset:javascript src="application.js"/> manifest文件我有大约20个脚本。有些用于某些视图,有些不用于。但是当页面被加载时,所有脚本都被加载 我非常喜欢资产管道。它使事情保持干净和易于管理 但我想知道是否可以进行配置更改,以便只加载视图所需的脚本。可能基于页面标题或标记 正如我在评论中指出的,资产管道的配置中没有任何东西可以处理这一问

我使用布局
main.gsp
渲染视图

main.gsp
中,我指定用于JavaScript的清单文件:

<asset:javascript src="application.js"/>
manifest文件我有大约20个脚本。有些用于某些视图,有些不用于。但是当页面被加载时,所有脚本都被加载

我非常喜欢资产管道。它使事情保持干净和易于管理


但我想知道是否可以进行配置更改,以便只加载视图所需的脚本。可能基于页面标题或
标记

正如我在评论中指出的,资产管道的配置中没有任何东西可以处理这一问题,但是如果您的需求足够简单,您可以轻松完成这一任务

例如,如果您的要求是“某些控制器及其视图将具有特定的清单,而其他控制器将默认为主清单”。您可以在布局中执行以下操作:

<g:set var="specificAssetExists" val="${false}" />
<g:set var="specificAsset" val="${params.controller}_${params?.action ?: 'index'}.js" />
<asset:assetPathExists src="js/${specificAsset}">
  <g:set var="specificAssetExists" val="${true}" />
</asset:assetPathExists>

<g:if test="${specificAssetExists}">
  <asset:javascript src="${specificAsset}"/>
</g:if>
<g:else>
  <asset:javascript src="application.js"/>
</g:else>


以上假设您将使用
controllerName\u actionName.js
命名控制器/操作特定的清单文件。如果上述代码不同,您也可以调整它们以满足您的需要。

您可以创建多个清单,但资产管道没有任何配置选项,可以说“仅此页面上的这些,仅此页面上的那些,等等。”这主意太棒了,Joshua。竖起大拇指!!文件夹前缀不是必需的
应该是