2

デスクトップのhtml5アプリケーションでは、常にjqueryを使用していますが、モバイルのhtml5アプリケーションを作成しているので、jqueryを使用する必要があるかどうか疑問に思っています。

まず、セレクターに興味があります。jsfiddleで実験を行い、$('#item')とdocument.getElementById('item')の速度の違いをテストしました。統計的に、$('#item')はdocument.getElementByIdよりも遅いと結論付けました。このため、jQueryを使用せずにコードを記述することに完全に切り替えたいと思いますが、この質問については次のように読んでいます。

`on`と`live`または`bind`の違いは何ですか?

バインディングに関しては、jQueryの.on()メソッドを使用すると非常に効率的です。jQueryの.on()メソッドはaddEventListener()よりも高速ですか?このdivの倍数を絶えず追加および削除している場合はどうなりますか?

<div class="item"></div>

DOMに。通常のJavaScriptでは、クラスアイテムを使用して新しいdivを追加するたびに、その新しいdivに対して再バインドする必要がありますが、.on()を使用すると自動的に再バインドされます。これはすべてより効率的ですか?

4

2 に答える 2

3

jQueryの.on()メソッドはaddEventListener()よりも高速ですか?

.on().event.add()は、を使用して定義されますaddEventListener。一方では、これらの関数はaddEventListener、引数のチェックと管理のオーバーヘッドのために、直接呼び出しよりも低速です。一方、.event.add()への呼び出しはaddEventListener可能な限り回避するようにしてください。

特定の例(アイテムの追加、イベントハンドラーのバインド、アイテムの削除)では、コストが.event.add()メリットを上回っているため、jQueryのパフォーマンスが低下すると予想されます。ただし、多くの場合、仮定するよりも測定する方が適切です。

また、jQueryは非常に移植性の高いものを目指していることにも注意してください。たとえば、Firefoxイベントディスパッチバグの回避策が含まれています。これらのブラウザのバグを自分でテストして回避することは、開発時間の価値がない場合があります。

于 2013-01-10T19:50:25.793 に答える
1

jQueryとネイティブ、および他のライブラリの使用の違いを示すテストはすでに数多くあります。基本的な概念は、ラッパーは追加のオーバーヘッドを作成するため、ほとんどの場合、ネイティブ関数よりも低速になるということです。ここではいくつかの例を示します。

http://jsperf.com/node-create-native-jquery-yui/3

于 2013-01-10T19:40:55.317 に答える