从 Grails 2.5 迁移到 Grails 3 时,建议不要使用资源插件,因为不推荐使用后 Grails 3 资源插件。作为替代方案,我使用了资产管道。在迁移到资产管道插件时,是否有推荐的替换资源插件模块的方法?自定义标签用于 GSP 文件,这些文件假定包含 CSS 文件中的内容。目前我正在创建需要模块中资源的空 .js 或 .css 文件,然后替换引用空文件的 CSS 内容。如果有更好的方法来做到这一点?
<html>
<head>
<g:layoutHead/>
<r:layoutResources />
<r:external uri="/css/mycss.css" type="css" />
<g:customStylesheetIncludes/>
</head>
<body>
<g:layoutBody/>
<r:layoutResources />
</body>
</html>
这将由自定义 taglib 处理:
class MyResourcesTagLib {
def customStylesheetIncludes = { attrs ->
def controller = attrs.controller ?: controllerName
def action = attrs.action ?: actionName
writeCssIfExists( out, "css/my-custom.css" )
// Determine the current page
writeCssIfExists( out, "css/views/$controller/${action}-custom.css" )
}
private resourceExists( resPath ) {
return grailsApplication.parentContext.getResource( resPath ).file.exists()
}
private writeCssIfExists( writer, css ) {
if (resourceExists(css)) {
def baseUri = grailsAttributes.getApplicationUri(request)
baseUri += (baseUri.endsWith('/') ? '' : '/')
writer << r.external(uri: baseUri, type: 'css')
}
}
}
我如何在 Grails 3 中使用资产管道处理相同的问题,任何建议或线索都非常感谢