在grails应用程序中缩小js和css的方法

时间:2013-03-14 12:32:10

标签: grails minify

我正在努力缩小grails应用程序中的js和css文件。我最初的计划是使用资源插件来缩小资源(也看看jawr和performance-ui,但资源似乎是事实上的标准)。

资源可以很容易地使用YUI缩小单个CSS文件,但是我们有超过40个JS文件,我们希望将它们连接成一个文件(并且文件也需要以正确的顺序连接)我没有看到任何暗示资源支持开箱即用的东西,这些是我们到目前为止计划的方法:

  1. 添加新的grails taglib以连接js和css文件以创建一个js和一个css文件并使用resources插件进行缩小。一个天真的实现意味着每次页面服务时都会运行yui-minify(!!)所以我们需要以某种方式引入缓存。

  2. 使用BuildConfig的grails.war.resources来缩小js和css。这将解决缓存问题,因为资源只能在构建时构建和缩小,但是需要我们使用grails run-war在本地进行测试,因此任何与缩小相关的错误都不会被捕获直到开发后期周期。

  3. 这一定是一个相当普遍的问题。其他人在做什么?希望了解我可以使用的任何其他方法或最佳实践。

1 个答案:

答案 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文件。