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



我正在研究最小化grails应用程序中的js和css文件。我最初的计划是使用资源插件来减少资源(也看了一下jawr和performance-ui,但这些天资源似乎是事实上的标准)。

Resources使使用YUI简化单个CSS文件变得容易,但是我们有超过40个JS文件,我们希望将它们连接到一个文件中(并且这些文件也需要按正确的顺序连接)。我还没有看到任何表明Resources支持开箱使用的方法,这些是我们目前计划的方法:

  1. 添加新的grails标签库来连接js和css文件,创建一个js和一个css文件,并使用资源插件进行最小化。幼稚的实现意味着每次页面被提供时都会运行yui-mini(!!),因此我们需要以某种方式引入缓存。

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

这一定是一个相当普遍的问题。其他人在做什么?

我想听听其他的方法或最佳实践。

你可以让你所有的资源使用同一个bundle,这样,你将只有一个合并的js。例子:

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

根据文档:

"bundle"映射器将相同类型的资源加在一起以减少客户端页面请求的文件数。

"bundle"映射器查看"bundle"属性的值资源,如果找到,将资源添加到新的合成聚合资源。

聚合的资源本身是通过映射器处理的,所以是这样取决于您应用于资源类型的其他优化bundle正在聚合。

bundle总是在静态资源的基目录中文件夹——这意味着对包内文件的引用必须是重新调整,以便它们继续引用相同的文件。这是制作的CSS文件可以通过csspreprocessor和cssrewriter映射器。

最新更新