Grails g:资源到资产管道的转换失败了

时间:2014-11-13 18:35:27

标签: css grails asset-pipeline

目前在我的Grails应用程序中,我的所有CSS / JSS分别在web-app/cssweb-app/js内,我在我的GSP中引用它们是这样的:

<link rel="stylesheet" type="text/css" href="<g:resource dir="css" file="myapp.css" />">
<script src="<g:resource dir="js" file="myapp.js" />"></script>

我正在尝试将这些转换为使用asset-pipeline

所以我将compile ":asset-pipeline:1.8.11"添加到BuildConfig#plugins部分,然后将我的CSS / JS文件移到grails-app/assets中的相应位置。 我保留了<g:resource>个标签。当服务器启动时,我的应用程序样式完全错误,显然Grails无法在新位置找到我的CSS / JS文件

我需要做些什么才能完成此转换?正确的吗?

1 个答案:

答案 0 :(得分:1)

您可以使用资产管道taglibs:

 <asset:stylesheet src="myapp.css" />
 <asset:javascript src="myapp.js" />

这将在grails-app / assets / stylesheets和javascripts中查找您的资源文件。

如果您仍然希望获取相对路径,则需要使用资产管道方法来执行此操作。

Asset Pipeline可以在部署时更改路径: 例如,在开发环境中,没有资源被缩小和组合,路径就像YOUR_APP / assets / myapp.js。

在生产环境中,路径将更改为YOUR_APP / assets / SOME_HASH_OF_YOUR_MINIFIED_ASSET

所以要让Asset Pipeline告诉你路径使用:

 ${asset.assetPath(src: 'myapp.js')}
 ${asset.assetPath(src: 'myapp.css')}

让Asset Pipeline计算路径可以在部署时提供更大的灵活性。例如,如果您在云中托管应用程序,则可以在Config.groovy中通过简单的配置更改指定特定的CDN(如AWS的CloudFront)来为您的静态资产提供服务。