使用Asset-Pipeline插件在Grails中创建一个视图加载特定的JavaScript

时间:2015-03-13 15:55:41

标签: javascript grails asset-pipeline

我使用布局main.gsp渲染我的观点。

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

<asset:javascript src="application.js"/>

在我的asset-pipeline清单文件中,我有大约20个脚本。有些用于某些视图,有些则不用。但是当加载页面时,所有脚本都被加载。

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

但是我想知道是否可以进行配置更改,因此只加载了视图所需的脚本。可能基于页面标题或<meta>标签?

1 个答案:

答案 0 :(得分:1)

正如我在评论中指出的那样,资产管道中没有任何配置来处理这个问题,但如果您的要求足够简单,您可以轻松完成此任务。

例如,如果您的要求是&#34;某些控制器及其视图将具有特定清单,而其他控制器及其视图将默认为主清单。&#34;你可以在你的布局中做这样的事情:

<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_actionName.js命名控制器/操作特定的清单文件。如果不同,您也可以调整上面的代码以满足您的需求。

相关问题