JSAの圧縮プロセスは2つのステップに分かれています
最初のステップは、Dojo Shrinksafeと同様の構文圧縮ですが、それよりも安全で効率的です。
2番目のステップは、現在テキスト圧縮です
JavaScriptコンプレッサー圧縮アルゴリズム。
(http://dean.edwards.name/packer/)
これらは、設定ウィンドウに設定できます。
デフォルトでは、構文圧縮が最初に使用されます。ファイルが1000バイトより大きく、テキスト圧縮が元のサイズの90%に圧縮できる場合、テキスト圧縮は元のベースで使用されます。
JSA構文の圧縮と最適化関数を示すスクリプト圧縮の例を次に示します。
コードコピーは次のとおりです。
試す {
// xxxx();
}
catch(e){
yyyy();
関数f1(){
}
}
ついに {
zzzz();
}
関数F2(var1){
var var2 = 2;
var var3 = 3;
var withObject = {var2:-2}
(with with with){
アラート(var2);
}
}
圧縮結果(簡単にアクセスできるようにフォーマット):
コードコピーは次のとおりです。
zzzz();
関数F2(a){
var var2 = 2;
var b = 3;
var c = {var2:-2};
(c){
アラート(var2);
}
}
圧縮比のための他の圧縮ツールとの比較:
1。JavaScriptコンプレッサー(http://dean.edwards.name/packer/)
彼自身の圧縮ツールコードを例として(v2.02)パッカーはサイズ7,428バイトで圧縮しました(コメントを削除します)。
そして、私たちの圧縮ツールは7,256バイトに圧縮できます
7256 /7428 = 0.9768443726440496
2.Dojo ShrinkSafe(大まかなことは非効率的で危険です。元のユーザーができるだけ早く変更することをお勧めします)
彼自身のフレームワークソースコードを例として(v0.4.1):
サイズを単独で149,518バイトに圧縮し、圧縮後に81,261バイトに収縮できます
81261 /149518 = 0.5434864029748927
安全指示:
1.JavaScriptコンプレッサー
テキスト圧縮に基づいて、私はそのロジックを注意深く見ませんでしたが、この圧縮問題の可能性は非常に低いです。私たちの圧縮ツールは、JSI 1.1 A8とその圧縮アルゴリズムも使用しています。
統合されたサードパーティライブラリのテストで例外は見つかりませんでした。また、よく知られているフレームワークJQueryもあるので、問題はないと思います。
サプリメント(2007-03-12):今日、JavaScript Multi-Line String Syntaxを分析する際に、このことがバグがあることがわかりました。ただし、この問題は、JSA構文によって圧縮された後、もはや存在しません。
2.Dojo ShrinkSafe Dangerous! ! ! ! !
長いローカル変数名をより短い名前に置き換えます。これは非常に安全でない圧縮ツールです。
コードコピーは次のとおりです。
関数(){
var withObject = {variable1:1}
var variable1 = 2;
(with with with){
Alert(variable1);
}
}
圧縮:
コードコピーは次のとおりです。
関数(){
var _1 = {variable1:1};
var _2 = 2;
(_1){
アラート(_2);
}
}
これは明らかに間違っています。このゴミは、JavaScriptの特別な構文やダイナミクスに注意を払っていません。
評価機能、キャッチ操作、およびステートメントの処理は行われません。
対照的に、JSAは私が現在知っている最も安全で効果的な圧縮ツールです。
JSAはコード圧縮関数を提供するだけでなく、フォーマットおよびスクリプト分析にも使用できます。
スクリプト分析を使用して、スクリプト情報を表示し、スクリプトの潜在的な問題を見つけることができます。
たとえば、スクリプトで宣言された関数と変数を確認します。
これらの外部変数が使用されました。など。 。