2012-03-28 14 views
0

JavaScript圧縮に関する質問が複数回尋ねられましたが、私の問題に答えることができません。複数のJavaScriptファイルを別々のファイルに圧縮する

共通のスクリプト(jQueryなど)とページ固有のスクリプトがあるプロジェクトがあります。 jQuery Mobileを使用すると、セッション中に共通スクリプトをキャッシュすることができます。<head>にあるものは1回だけダウンロードします。特定のスクリプトは、<script><div data-role="page">に置く限り、ページが読み込まれている場合にのみ取得されます。

これは、アプリのページをブラウズしながらダウンロードされたスクリプトを最適化し、いつでもブラウザに最小限のJavaScriptがメモリに保存されていることを保証します。

しかし、マージできないさまざまなファイル間に依存関係があるため、細分化はひどいです。それは高度なバージョンに比べてファイルのサイズを倍増:機能や変数名を変更しない、単純な縮小スクリプトを使用して

  • は、これまでのところ私は2つのとてもよく私に合わない解決策を見つけました

  • 一つにすべてのスクリプトをグループ化し、<head>に入れ、それを圧縮する:あなたが唯一の希望があり、スクリプトをダウンロードする機能を失い、ブラウザが

をロードし、不要な機能を持っている(私はmanuaを除外しますLLY明らかに関数名を変更し、私はそれらのいずれかを行うことができ、コンプレッサを探しています

)):

  • が一緒にすべてのファイルを圧縮しますが別々のファイルに出力することがモジュール性を保つために
  • 可能であれば、高度な方法で独立してファイルを圧縮しますが、ミニファイヤーが外部関数や変数(jQueryなど)へのリンクの名前を変更するのを防ぐタグが付いています

存在しますか?

答えて

0

Google Closure Compilerは、このすべてにもっと慣れ親しんだことがあります。

移動するための方法のための外部宣言を定義することです:

  • あなたは(jQueryの、jQueryのモバイル...)を使用しているサードパーティのライブラリ。 some of them thereが見つかります。

  • 家はあなたが別々にロードされている自家製のスクリプトを圧縮する場合、あなたは次のような技術(detailed in Closure Compiler documentation)を使用して、他の場所で使用する変数をエクスポートする必要があり、明らかに別々

をロードするスクリプトを作りました

/** 
* A function you want to be able to call from elsewhere after compressing 
* @param {string} a 
*/ 
function exportedFunction(a) {alert(a);} 

window['exportedFunction'] = exportedFunction; 

次に、必要なファイルをバッチで、または別々に圧縮できます。以前はそれを使わなかったとは思えないほど強力なツールです。

関連する問題