ホームページ >ウェブフロントエンド >jsチュートリアル >jQueryコードの効率を向上させる書き方テクニックのまとめ
DOM トラバーサルはコストがかかるため、再利用される要素をキャッシュするようにしてください。
// 糟糕h = $('#element').height(); $('#element').css('height',h-20);// 建议$element = $('#element'); h = $element.height(); $element.css('height',h-20);
jQuery は一般に JavaScript と同じです。変数が関数スコープ内にあることを確認するのが最善です。
// 糟糕$element = $('#element'); h = $element.height(); $element.css('height',h-20);// 建议var $element = $('#element');var h = $element.height(); $element.css('height',h-20);
jQuery オブジェクトを簡単に識別するには、変数の前に $ プレフィックスを追加します。
// 糟糕var first = $('#first');var second = $('#second');var value = $first.val();// 建议 - 在jQuery对象前加$前缀var $first = $('#first');var $second = $('#second'),var value = $first.val();
複数の var ステートメントを 1 つのステートメントに結合します。未割り当ての変数を最後に置くことをお勧めします。
var $first = $('#first'), $second = $('#second'), value = $first.val(), k = 3, cookiestring = 'SOMECOOKIESPLEASE', i, j, myArray = {};
jQueryの新しいバージョンでは、短いon("click")がclick()のような関数の代わりに使用されます。以前のバージョンでは、on() は binding() でした。 jQuery バージョン 1.7 以降、イベント ハンドラーをアタッチするには on() が推奨される方法です。ただし、一貫性を保つために、単に on() メソッドをまとめて使用することもできます。
// 糟糕$first.click(function(){ $first.css('border','1px solid red'); $first.css('color','blue'); }); $first.hover(function(){ $first.css('border','1px solid red'); })// 建议$first.on('click',function(){ $first.css('border','1px solid red'); $first.css('color','blue'); }) $first.on('hover',function(){ $first.css('border','1px solid red'); })
一般に、可能な限り関数を組み合わせることが最善です。
// 糟糕$first.click(function(){ $first.css('border','1px solid red'); $first.css('color','blue'); });// 建议$first.on('click',function(){ $first.css({'border':'1px solid red','color':'blue'}); });
jQueryでメソッドのチェーン操作を実装するのはとても簡単です。以下を活用してください。
// 糟糕$second.html(value); $second.on('click',function(){ alert('hello everybody'); }); $second.fadeIn('slow'); $second.animate({height:'120px'},500);// 建议$second.html(value); $second.on('click',function(){ alert('hello everybody'); }).fadeIn('slow').animate({height:'120px'},500);
コードを合理化しチェーンを使用すると、コードが読みにくくなる可能性があります。ピンチや改行を追加すると、驚くべき効果が得られます。
$second.html(value); $second.on('click',function(){ alert('hello everybody'); }).fadeIn('slow').animate({height:'120px'},500);// 建议$second.html(value); $second .on('click',function(){ alert('hello everybody');}) .fadeIn('slow') .animate({height:'120px'},500);
短絡評価は、&& (論理 AND) または || (論理 OR) 演算子を使用して左から右に評価される式です。
// 糟糕function initVar($myVar) {if(!$myVar) { $myVar = $('#selector'); } }// 建议function initVar($myVar) { $myVar = $myVar || $('#selector'); }
コードを合理化する方法の 1 つは、コーディング ショートカットを利用することです。
// 糟糕if(collection.length > 0){..}// 建议if(collection.length){..}
DOM 要素に対して多くの操作 (複数の属性や CSS スタイルを連続して設定する) を実行する予定がある場合は、最初に要素を分離してから追加することをお勧めします。
// 糟糕var$container = $("#container"), $containerLi = $("#container li"), $element = null; $element = $containerLi.first();//... 许多复杂的操作// bettervar$container = $("#container"), $containerLi = $container.find("li"), $element = null; $element = $containerLi.first().detach();//... 许多复杂的操作$container.append($element);
jQuery でのメソッドの使用に慣れていない可能性があります。必ずドキュメントを確認してください。より良い、より高速な使用方法がある可能性があります。
// 糟糕$('#id').data(key,value);// 建议 (高效)$.data('#id',key,value);
前述したように、DOM トラバーサルはコストのかかる操作です。一般的なアプローチは、親要素をキャッシュし、子要素を選択するときにこれらのキャッシュされた要素を再利用することです。
// 糟糕var$container = $('#container'), $containerLi = $('#container li'), $containerLiSpan = $('#container li span');// 建议 (高效)var$container = $('#container '), $containerLi = $container.find('li'), $containerLiSpan= $containerLi.find('span');
ユニバーサル セレクターを子孫セレクターに入れると、パフォーマンスが低下します。
// 糟糕$('.container > *');// 建议$('.container').children();
ユニバーサル セレクターは暗黙的な場合があり、見つけるのが簡単ではありません。
// 糟糕$('.someclass :radio');// 建议$('.someclass input:radio');
たとえば、ID セレクターは一意である必要があるため、セレクターを追加する必要はありません。
// 糟糕$('div#myid'); $('div#footer a.myLink');// 建议$('#myid'); $('#footer .myLink');
ID セレクターは一意である必要があり、追加のセレクターを追加する必要はなく、複数の子孫 ID セレクターは必要ないことを強調したいと思います。
// 糟糕$('#outer #inner');// 建议$('#inner');
通常、新しいバージョンの方が優れており、より軽量でより効率的です。明らかに、サポートしたいコードの互換性を考慮する必要があります。たとえば、バージョン 2.0 は IE 6/7/8 をサポートしていません。
新しいバージョンごとに非推奨のメソッドに注意を払い、これらのメソッドの使用を避けることが非常に重要です。
// 糟糕 - live 已经废弃$('#stuff').live('click', function() { console.log('hooray'); });// 建议$('#stuff').on('click', function() { console.log('hooray'); });// 注:此处可能不当,应为live能实现实时绑定,delegate或许更合适
Google の CND により、ユーザーに最も近いキャッシュが選択され、迅速に応答することが保証されます。 (Google CNDを使用する場合はご自身でアドレスを検索してください。ここのアドレスは使用できません。jquery公式サイトが提供するCDNを推奨します。)
上で述べたように、jQuery は JavaScript です。つまり、jQuery で実行できることはすべてネイティブ コードでも実行できます。ネイティブ コード (またはバニラ) は、jQuery ほど読みにくく保守しにくい可能性があり、コードは長くなります。しかし、それはより効率的であることも意味します (通常、基礎となるコードに近づくほど可読性が低くなり、パフォーマンスが向上します。たとえば、アセンブリには当然より強力な人材が必要です)。ネイティブ コードよりも小さく、軽く、効率的なフレームワークは存在しないことに留意してください (注: テスト リンクは無効になりました。テスト コードはオンラインで検索できます)。
バニラと jQuery のパフォーマンスの違いを考慮して、両方の長所を吸収し、(可能であれば) jQuery と同等のネイティブ コードを使用することを強くお勧めします。
jQuery の記述原則:
1. jQuery を使いすぎないでください
1. jQuery がどれほど高速であっても、ネイティブの JavaScript メソッドと比較することはできず、作成された jQuery オブジェクトには膨大な量の情報が含まれます。したがって、使用できるネイティブ メソッドがある場合は、jQuery の使用を避けるようにしてください。
2. 多くの jQuery メソッドには 2 つのバージョンがあり、1 つは jQuery オブジェクト用で、もう 1 つは jQuery 関数用です。後者は jQuery オブジェクトを介して動作しないため、オーバーヘッドが比較的少なく、高速です。
以上がjQueryコードの効率を向上させる書き方テクニックのまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。