我正在努力缩小grails应用程序中的js和css文件。我最初的计划是使用资源插件来缩小资源(也看看jawr和performance-ui,但资源似乎是事实上的标准)。
资源可以很容易地使用YUI缩小单个CSS文件,但是我们有超过40个JS文件,我们希望将它们连接成一个文件(并且文件也需要以正确的顺序连接)我没有看到任何暗示资源支持开箱即用的东西,这些是我们到目前为止计划的方法:
添加新的grails taglib以连接js和css文件以创建一个js和一个css文件并使用resources插件进行缩小。一个天真的实现意味着每次页面服务时都会运行yui-minify(!!)所以我们需要以某种方式引入缓存。
使用BuildConfig的grails.war.resources来缩小js和css。这将解决缓存问题,因为资源只能在构建时构建和缩小,但是需要我们使用grails run-war在本地进行测试,因此任何与缩小相关的错误都不会被捕获直到开发后期周期。
这一定是一个相当普遍的问题。其他人在做什么?希望了解我可以使用的任何其他方法或最佳实践。
答案 0 :(得分:1)
您可以使用相同的捆绑包来创建所有资源,使用此捆绑包,您将只有一个合并的js。例如:
main {
resource id: 'mainjs', url: 'js/main.js'
defaultBundle: 'mybundle'
}
second {
resource id: 'secondjs', url: 'js/second.js'
defaultBundle: 'mybundle'
}
根据文件:
“捆绑”映射器将相同类型的资源添加到一起以减少 客户端页面请求的文件数。
“bundle”映射器查看“bundle”属性的值 资源,如果找到,将把资源添加到新的合成 聚合资源。
这个聚合资源本身是通过映射器处理的,所以它是 取决于您应用于资源类型的其他优化 捆绑正在聚合。
Bundle始终位于静态资源的基本目录中 文件夹 - 这意味着对包内文件的引用必须是 重新调整,以便他们继续引用相同的文件。这是 csspreprocessor和cssrewriter mappers可以用于CSS文件。