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

Kas*_*ota 8 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在本地进行测试,因此任何与缩小相关的错误都不会被捕获直到开发后期周期.

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

小智 1

您可以使用同一个包来制作所有资源,这样您将只有一个合并的 js。例子:

main {
  resource id: 'mainjs', url: 'js/main.js'
  defaultBundle: 'mybundle'
}

second {
  resource id: 'secondjs', url: 'js/second.js'
  defaultBundle: 'mybundle'
}
Run Code Online (Sandbox Code Playgroud)

根据文档:

“捆绑”映射器将相同类型的资源添加在一起,以减少客户端页面请求的文件数量。

“bundle”映射器查看资源上“bundle”属性的值,如果找到,则将该资源添加到新的合成聚合资源中。

此聚合资源本身是通过映射器进行处理的,因此它受到您应用于捆绑聚合的资源类型的其他优化的影响。

捆绑包始终位于静态资源文件夹的基目录中 - 这意味着必须重新调整对捆绑包内文件的引用,以便它们继续引用相同的文件。这可以通过 csspreprocessor 和 cssrewriter 映射器来处理 CSS 文件。