2011-11-09 13 views
1

私はJSの縮小にGoogleのClosureコンパイラを使用しています。私のコードには、繰り返しの文字列がある場所がいくつかあります。クローズコンパイラによる文字列の複製を防止する

(function($){ 


$('.bat').append('<p>the red car has a fantastically wonderfully awe inspiringly world class engine</p><p>the blue car has a fantastically wonderfully awe inspiringly world class stereo</p><p>the green car has a fantastically wonderfully awe inspiringly world class horn</p>') 

})(jQuery); 

コンパイラは、冗長性が(予想される)ことを最小限に抑えていなかったので、私はそれをしなかった自分自身を「プリコンパイル」コードで:

(function($){ 

    var ch = ' car has a fantastically wonderfully awe inspiringly world class '; 
    $('.bat').append('<p>the red'+ch+'engine</p><p>the blue'+ch+'stereo</p><p>the green'+ch+'horn</p>') 

})(jQuery); 

をしかし、私は、コンパイラによることを実行したときにそれは私を反転させます圧縮により、より多くの文字が生成されます。出力:

(function(a){a(".bat").append("<p>the red car has a fantastically wonderfully awe inspiringly world class engine</p><p>the blue car has a fantastically wonderfully awe inspiringly world class stereo</p><p>the green car has a fantastically wonderfully awe inspiringly world class horn</p>")})(jQuery); 

これを防ぐ方法はありますか?なぜそれが行われているか、任意のアイデア?実行時パフォーマンスの改善ですか?

おかげ

+0

私の知る限りでは、閉鎖が正しいことをやっています。変数 'ch'は外部では使用されず、インライン展開することでバイトを節約し(パフォーマンスを向上させます)あなたのやり方は、 "繰り返した文字列"を避けるための解決策ではないようです。また、文字列が繰り返されるとストレージの効率が悪いように見えますが、gzippedサイズには影響しないことに注意してください。 –

答えて

関連する問題