使用 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 特定清单文件。如果以上代码不同,您也可以根据自己的需要进行调整。
我使用布局 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 特定清单文件。如果以上代码不同,您也可以根据自己的需要进行调整。