2009-04-08 7 views

答えて

1

コンプレッサーのほとんどは、異なる技術を組み合わせて使用​​します。

  • ストリッピング空白
  • 圧縮algorythmによって
  • 圧縮ファイル(gzipで、収縮させる)
  • は、スペースのほとんどは、例えば短い名前の変数や関数interall名前変更保存されます:

この関数:

function func (variable) { 
    var temp = 2 * variable; 
    return temp; 
} 

になるだろう:

function func (a) { 
    var b = 2 * a; 
    return b; 
} 
  • ディーンエドワーズpackerは、いくつかの内部の圧縮を使用しています。スクリプトは、ページにロードされると解凍されます。
  • programmcodeを短くするためにすべての通常のもの:そのGZIP圧縮機は、より良い結果を持っていますので、
    • 関数のインライン展開
+0

になるでしょう:function f(a){return 2 * a;};)72文字から27まで –

+0

グローバルなjavascriptスコープでfuncを使用したい場合は、そのまま名前を残します。;-) – TheHippo

0

私はGoogleのWeb Toolkitをコンパイラ内で発見されているいくつかの名前を付けることができます方法の

  • インライン呼び出し
  • デッドコード削除
  • 変数の名前変更/ソースの難読化、これは書き換え意味
    • を短い変数などの長い変数

ほとんどすべてがJavascriptの解析が必要です(つまり、純粋な字句解析を超えて機能します)。私の頭の上オフ

+0

デッドコードの一部が私をおびえさせること、どのようにGWTのコードは時に死んでいることを知っているんJSにはグローバルスコープがありますか?または、GWTはすべてのJSを一度にコンパイルするように設計されていて、複数のJSファイルのうちの1つだけで実行すると動作しません。 –

+0

GWTはモノリシックコンパイラなので、java内でできることにいくつかの制限を加えることで、メソッドが呼び出されたかどうかを正確に判断できます(Eclipse IDEでできることに似ています)。 –

1

...

  • は、ローカル変数をトークン化して、最小限のサイズの変数にそれらの名前を変更します。
  • 大量の空白を削除します。
  • 不必要な中括弧を削除します(たとえば、if-statementsが中カッコを削除して1つのセミコロンを追加した後の1行の実行など)。
  • 不要なセミコロンを削除します(たとえば、終了ブレース '}'の直前など)。

私の最も一般的に使用されるminifierがYUI Compressorで、as they stateあなたは彼らが正確に何で自分のために見てみることができますので、それはオープンソースです。 (私はあなたに文字または2を獲得するまれな例はおそらくたくさん、「ミクロの最適化」によって、彼らが何を意味するかわからない。)

0

コードの名前変更や並べ替えを未使用のコードを削除します。例えば

(それほど巧妙でない)

元のコード:

function mul(mul1, mul2) 
{ 
return mul1 * mul2; 
} 

function print(str) 
{ 
    // do something 
} 

function add(add1, add2) 
{ 
return add1 + add2; 
} 

は、コードを変更:

function mul(a,b) 
{ 
return a * b; 
} 

function add(a, b) 
{ 
return a + b; 
} 

function print(str) 
{ 
    // do something 
} 
+0

私はあなたが本当に質問に答えなかった、つまりどのテクニック*が使われているかのように、この答えを投票していません。 – rjzii

+0

申し訳ありませんロブ、私は全体の質問を読んでいない。 新しい答え、今度はもっと良くなることを願って:) –

+0

@Shay - そうだね。 – rjzii

関連する問題