2

JQuery が存在しない要素を呼び出す場合、そのオーバーヘッドはどのくらいですか? エラーは発生しませんが、スクリプトのロード以外に CPU のオーバーヘッドはありますか? これがクラスまたはIDに対して行われるかどうかは重要ですか?

キャッシュの理由と同時接続を最小限に抑える理由から、すべてのページのすべての onload スクリプトを 1 つのファイルに保持していますが、javascript にどのページにあるのかを伝えてビットのみをロードするのが効率的かどうか疑問に思っていましたif ステートメントまたは switch ステートメントを介してそのページで実際に実行されるコードの。最初の訪問後にすべてのページをキャッシュからできるだけ多くロードしたいので、それらを別々のファイルに入れたくありません。

たとえば、ホームページを表示していますが、製品ページの JavaScript がそのファイルまたはオンロードに含まれています。

$('#product_options').hover(function(){},function(){});

ただし、このページはホームページであるため、product_options はこのページには存在しません。

そして、それは次のようなクラスに違いをもたらしますか

$('.addtocart').click(function(){})

これは、JQuery でエラーをスローしないことに注意してください。

4

2 に答える 2

2

#product_optionsjQuery には、 ;などの単一の ID セレクターを処理するための特別な「高速」パスがあります。他のすべてのセレクターは、より複雑な方法で処理されます。ID セレクターを使用し続けると、パフォーマンスへの影響は計り知れません。

他のセレクターを使用すると、パフォーマンスへの影響は比較的大きくなります、数十のセレクターについて話している場合を除き、絶対的に大きな影響を与える可能性は低くなります。

ただし、コードを関数内に配置し、各ページから関連するものだけを呼び出すことで、これらすべてを回避できます。各ページに書きすぎない

<script type="text/javascript">
$(function() {
    doSomething();
    doSomethingElse();
});
</script>

IMHOこれは、コードを多くのファイルに分散させないと同時に、デッドコードを実行しようとしないことのバランスが取れています。

于 2012-08-02T21:53:43.880 に答える
0

一致がないことを判断するためにも作業を行う必要があるため、パフォーマンスが低下します。さて、一般に、これは非常に些細なことであり、Javascript を多用する巨大な Web アプリケーション (Facebook など) を持っていない限り、おそらく気にする必要はないでしょう。とは言っても、ページ上で実行する必要があるコードのみを実行することは依然として良い習慣であり、それを実行するために私が見つけた最良の方法は、ポール アイリッシュの方法であるマークアップベースの控えめで包括的な DOM-ready executionです。

于 2012-08-02T21:56:21.913 に答える