2012-02-21 11 views
9

私のJavaScriptアプリケーションでは、いくつかのオブジェクトを内部目的でのみ使用します(ユーザーはアクセスする必要はありません)。オブジェクトプロパティを縮小するソリューション?

var images={ 
    blank:"blank.gif", 
    plus:"plus.gif", 
    minus:"minus.gif" 
} 

Uglify.jsのような小型化ツールを使用すると、プロパティ名(空白、プラス、マイナス)がそのまま保持されます。それらを小型化する方法はありますか?

私はこれまで考えられてきた:minifierアドバンストモードで

  • 使用Googleの閉鎖を、これは私のコード
  • を押しつぶすことは、変数とオブジェクトのプロパティを置き換える(例えばVAR imagesBlank =「blank.gif」)が、コードを読みにくくする

良い方法はありますか?

+3

*高度なモードでGoogleクローズミニカーを使用しますが、これは私のコードを破壊します。* ...ドキュメントを慎重に読み、クラッシュしないようにコードを調整する必要があります。私は、Google Closureコンパイラが最適なオプションだと思います。 –

+0

@FelixKling私の質問に関連するリンクがありますか?また、私はそれを受け入れることができるように答えとして投稿すること自由に感じる! – Christophe

+0

いいえ、実際は...ドキュメントのみ(http://code.google.com/closure/compiler/docs/api-tutorial3.html)。 –

答えて

-3

この場合、images.blankの参照はすべてとminusと同じで、"blank.gif"と置き換えることができます。何らかの理由ですべてのファイル名を変更しようとすると、グローバルな検索と置換によって解決できないものはありません。 imagesオブジェクトはまったく必要ありません。

+0

これは単なる例でした。私のコードでは、画像のリンクは実際には「http://domainName/hierarchy/blank.gif」より長くなっています。文字列を繰り返しても、縮小問題は解決されません。私は変数にそれを格納することができましたが、その後私は私の質問に戻ります。 – Christophe

+0

まあ、変数 'baseimgurl =" http:// exampleを持つことができます。com/hierarchy/";"そしてあなたの画像リンクにそれを前置きします...たぶん。 –

4

オブジェクトを使用すると、変数をプロパティとして使用できます。閉鎖でそれを包むことは、それらの変数を縮小する価値があります。

//Wrap in closure 
(function() { 

    //Property Variables 
    var blank = 0; 
    var plus = 1; 
    var minus = 2; 

    //Define Object 
    var image = []; 
    image[blank] = "blank.gif"; 
    image[plus] = "plus.gif"; 
    image[minus] = "minus.gif"; 

    //Accessors - must be within closure 
    image[blank]; //blank.gif 
    image[plus]; //plus.gif 
    image[minus]; //minus.gif 

})(); 

定数が閉鎖内で使用する必要があり、上記の値にアクセスします。

1、すなわち0、プロパティ値がゼロから番号が付けられているのでvar image = [];アレイを宣言してより効率的になり用い、Googleのクロージャコンパイラを使用している場合、2

それ以外の場合は、var image = {};も正常に機能します。

0

内部プロパティに一意の接頭辞が付いている場合は、https://github.com/mishoo/UglifyJS2あたり--mangle-props regexを試すことができます。

gulp-uglifyが必要なgulpfileでの使用方法は次のとおりです。

関連する問題