使用 Asset-Pipeline 插件在 Grails 中创建视图负载特定 JavaScript

Make in Grails a view load specific JavaScript using the Asset-Pipeline Plugin

我使用布局 main.gsp 呈现我的视图。

main.gsp 中,我指定了用于 JavaScript:

的清单文件
<asset:javascript src="application.js"/>

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

我非常喜欢asset-pipeline。它使事情保持清洁和易于管理。

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

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

例如,如果您的要求是 "Some controllers and their views will have specific manifests, while others will default to the main manifest.",您可以在布局中做这样的事情:

<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 命名您的 controller/action 特定清单文件。如果以上代码不同,您也可以根据自己的需要进行调整。