8

私はgrailsアプリケーションでjsファイルとcssファイルの縮小に取り組んでいます。私の当初の計画は、リソースプラグインを使用してリソースを最小化することです(jawrとperformance-uiも調べましたが、リソースは最近のデファクトスタンダードのようです)。

リソースを使用すると、YUIを使用して個々のCSSファイルを簡単に縮小できますが、40を超えるJSファイルがあり、これらを1つのファイルに連結したいと思います(ファイルも正しい順序で連結する必要があります)。 Resourcesがこれをすぐにサポートすることを示唆するものを見た、これらは私たちがこれまでに計画したアプローチです:

  1. 新しいgrailstaglibを追加して、jsファイルとcssファイルを連結し、1つのjsファイルと1つのcssファイルを作成し、リソースプラグインを使用して縮小します。単純な実装とは、ページが提供されるたびにyui-minifyが実行されることを意味するため(!!)、何らかの方法でキャッシュを導入する必要があります。

  2. BuildConfigのgrails.war.resourcesを使用して、jsとcssを縮小します。リソースはビルド時にのみビルドおよびミニファイされるため、これはキャッシュの問題を回避しますが、ローカルでテストするにはgrails run-warを使用する必要があるため、ミニファイ関連のエラーは開発の後半までキャッチされません。サイクル。

これはかなり一般的な問題であるに違いありません。他の人は何をしていますか?私が使用できる他のアプローチやベストプラクティスについて聞きたいです。

4

1 に答える 1

1

同じバンドルを使用してすべてのリソースを作成できます。これにより、マージされたjsは1つだけになります。例:

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

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

ドキュメントによると:

「バンドル」マッパーは、同じタイプのリソースを追加して、クライアントページが要求するファイルの数を減らします。

「bundle」マッパーは、リソースの「bundle」プロパティの値を調べ、見つかった場合は、そのリソースを新しい合成集約リソースに追加します。

この集約されたリソース自体はマッパーを介して処理されるため、バンドルが集約しているリソースの種類に適用する他の最適化の対象となります。

バンドルは常に静的リソースフォルダのベースディレクトリにあります。つまり、バンドル内のファイルへの参照は、同じファイルを引き続き参照するように再調整する必要があります。これは、csspreprocessorおよびcssrewriterマッパーによってCSSファイルで可能になります。

于 2013-03-14T12:50:31.240 に答える