ホームページ >ウェブフロントエンド >jsチュートリアル >YUI Compressor の圧縮 JavaScript 原理と micro-optimization_javascript スキル

YUI Compressor の圧縮 JavaScript 原理と micro-optimization_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 17:44:181206ブラウズ

最近 jQuery プラグインを作成し、最適化が完了したときに、圧縮ファイルが比較的大きいことがわかり、圧縮の原理について学ぶ余地がたくさんあることがわかりました。今回、YUI Compressor を使用して JavaScript を圧縮しましたが、ファイルを保持するためにプラグインを作成するには、圧縮できるもの、特に圧縮できないものを明確にする必要があることを深く理解しました。また、最適化プロセス中に、コードをより小さくする必要があることもわかります。この改善は、将来的に非常に役立ちます。インターネットで偶然見つけた記事を記録しておきました。

YUI Compressor は、 を含む JavaScript コンテンツを圧縮します。
コメントの削除
余分なスペースの削除
微妙な最適化
識別子の置換

内容YUI Compressor には微妙な最適化が含まれていますか?
object["property"] 、プロパティ名が有効な JavaScript 識別子 (注: 有効な JavaScript 識別子は文字で始まり、オプションでその後に 1 つ以上の文字、数字、またはアンダースコアが続きます) であり、予約語の場合、object.property
{"property":123} に最適化されます。プロパティ名が有効な JavaScript 識別子であり、予約語ではない場合、{property:123} に最適化されます。注: オブジェクト リテラルでは、プロパティ名が有効な JavaScript 識別子であり、予約語ではない場合、プロパティ名を引用符で囲む必要はありません)。
'abcd'efgh' は、「abcd'efgh」に最適化されます。
"abcd" "efgh"、文字列接続の場合は、"abcdefgh" に最適化されます (注: すべて YUI Compressor を使用する前提で、スクリプト内の文字列接続にはコネクタ " " を使用します)効率性と最高の保守性を実現します)。
JavaScript の最も効果的な圧縮の最適化は、識別子の置換です。
例:

コードをコピーします コードは次のとおりです:

(function( ){
function add(num1, num2) {
return num1 num2;
})();

属性識別子を置き換えた後:

コードをコピーします コードは次のとおりです。
(function(){
function A(C , B) {
return C B;
}
})();

余分なスペースを削除すると、次のようになります:

コードをコピー コードは次のとおりです:
(function(){function A(C,B){return C B;}})() ;


YUI Compressor の識別子の置換では関数名と変数名のみが置換されますが、置換できないものは何ですか? プリミティブ値: 文字列、ブール値、数値、null、および未定義。一般に、文字列が最も多くのスペースを占め、次に非数値リテラル (true、false、null、underfinded) が続きます。
グローバル変数: ウィンドウ、ドキュメント、XMLHttpRequest など。最も一般的に使用されるのはドキュメントとウィンドウです。
属性名 (foo.bar など)。占有されるスペースは文字列に次いで多く、「.」演算子は置き換えることができず、a.b.c はより多くのスペースを消費します。
キーワード。頻繁に使用されすぎるキーワードは、var、return です。最適な最適化方法: var キーワードと return キーワードは関数内で 1 回だけ使用されます。
プリミティブ値、グローバル変数、および属性名の最適化処理はほぼ同じです。2 回以上 (両端を含む) 使用されたリテラル値、グローバル変数、または属性名は、ローカル変数ストレージに置き換える必要があります。
ただし、識別子の置換が禁止されている場合もあります。
eval() 関数を使用します。解決策: グローバル関数ラッパー eval() を使用または作成しないでください。
with ステートメントを使用します。解決策: 方法は上記と同じです。
JScript の条件付きコメント。唯一の解決策は、使用しないことです。
YUI Compressor は rhino インタープリター上に構築されているため、上記の最適化はすべて安全です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。