ホームページ ウェブフロントエンド jsチュートリアル jQuery_jquery のパフォーマンスを向上させるために 7 つのことを実行してください

jQuery_jquery のパフォーマンスを向上させるために 7 つのことを実行してください

May 16, 2016 pm 05:01 PM
jquery パフォーマンス

1. ループの外に追加

DOM に関係するものにはすべて代償が伴います。多数の要素を DOM に追加する場合は、複数回行うのではなく、すべてを一度に追加する必要があります。ループに要素を追加するときによくある問題が発生します。

コードをコピー コードは次のとおりです。

$.each( myArray, function( i , item ) {
var newListItem = "
  • " item "
  • ";
    $( "#ballers" ).append( newListItem );
    });

    一般的な手法は、文書の断片を使用することです。ループの各反復で、DOM 要素の代わりに要素をフラグメントに追加します。ループが終了したら、フラグメントを DOM 要素に追加します。

    コードをコピー コードは次のとおりです。

    var frag = document.createDocumentFragment();

    $.each( myArray, function( i, item ) {

    var newListItem = document.createElement( "li" );
    var itemText = document.createTextNode( item );

    newListItem.appendChild( itemText );

    frag.appendChild( newListItem );

    });

    $( "#ballers" )[ 0 ].appendChild( frag );

    もう 1 つの簡単なトリックは、ループの反復ごとに文字列を継続的に構築することです。ループが終了したら、DOM 要素の HTML をこの文字列に設定します。

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

    var myHtml = "";

    $.each( myArray, function( i, item ) {

    myHtml = "

  • " item "
  • ";

    });

    $( "#ballers" ).html( myHtml );

    もちろん、他にも試すことができるテクニックがあります。 jsperf というサイトは、これらのプロパティをテストするための優れた方法を提供します。このサイトでは、各手法のベンチマークを実行し、クロスプラットフォームのパフォーマンス結果を視覚化できます。

    2. ループ中のキャッシュ長

    for ループでは、事前にキャッシュする必要がある配列の長さプロパティに毎回アクセスしないでください。

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

    var myLength = myArray.length;

    for ( var i = 0; i

    // 何かをします

    }

    3. 操作する要素を切り離します

    DOM の操作は遅いため、できるだけ調整を少なくして操作する必要があります。 jQuery は、この問題を解決するために、バージョン 1.4 で detach() と呼ばれるメソッドを導入しました。これにより、要素を操作するときに DOM から要素を切り離すことができます。

    コードをコピー コードは次のとおりです。

    var $table = $( "#myTable " );
    var $parent = $table.parent();

    $table.detach();

    // ... テーブルに大量の行を追加します

    $parent.append( $table );

    4. 存在しない要素に基づいて行動しない

    空のセレクターで多くのコードを実行する予定がある場合、jQuery はヒントを提供しません。エラーが発生しなかったかのように実行を続けます。セレクターに含まれる要素の数を確認するのはあなた次第です。

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

    // 悪い: これは、前に 3 つの関数を実行します。 it
    // 選択範囲に何もないことがわかります
    $( "#nouchthing" ).slideUp();

    // より良い:
    var $mySelection = $( "#nouchthing" );

    if ( $mySelection.length ) {

    $mySelection.slideUp();

    }

    // ベスト: doOnce プラグインを追加します。
    jQuery.fn.doOnce = function( func ) {

    this.length && func.apply( this );

    これを返します;

    }

    $( "li.cartitems" ).doOnce(function() {

    // ajax にしてください。o/

    });

    このガイドは、セレクターに要素が含まれていない場合に多くのオーバーヘッドを必要とする jQuery UI ウィジェットに特に役立ちます。

    5. セレクターを最適化する

    多くのブラウザーが document.querySelectorAll() メソッドを実装し、jQuery がセレクターの負担をブラウザーに移すため、セレクターの最適化は以前ほど重要ではありません。ただし、留意すべきヒントがまだいくつかあります。

    ID ベースのセレクター

    セレクターを ID で開始することが常に最善です。

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

    // 高速:
    $( "#container div.robotarm" );

    // 超高速:
    $( "#container" ).find( "div.robotarm" );

    最初のセレクターがノイズの多いセレクター エンジンを経由せずに処理されるため、.find() メソッドを使用すると高速になります -- ID のみのセレクターはすでに document.getElementById() メソッドを使用しています ネイティブであるため処理が高速ですブラウザ。

    特異性

    セレクターの右側をできるだけ詳しく説明し、左側についてはその逆を行います。

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

    // 最適化されていません:
    $( "div. data .gonzalez" );

    // 最適化:
    $( ".data td.gonzalez" );

    セレクターの右端には tag.class の形式でセレクターを記述し、左側には tag または .class のみを使用するようにしてください。

    特異性の過度の使用を避ける

    コードをコピー コードは次のとおりです。

    $( ".data table.attendees td .gonzalez" );

    // より良い: 可能であれば中央を削除します。
    $( ".data td.gonzalez" );

    「DOM」を使用すると、要素を検索するときにセレクター エンジンがそれほど多くの反復を行う必要がないため、常にセレクターのパフォーマンスが向上します。

    ユニバーサルセレクターの使用を避ける

    セレクターが明示的または暗黙的に未定義の範囲内で一致する場合、パフォーマンスに大きな影響を与えます。

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

    $( ".buttons > *" ); // 非常に高価です。
    $( ".buttons" ).children(); // はるかに優れています。

    $( ".category :radio" ); // 暗黙のユニバーサル選択。 🎜> $ ( ".category *:radio" ); // 同じことですが、今度は明示的にします。
    $( ".category input:radio" ) // はるかに優れています。
    多くの CSS を変更するためにスタイルシートを使用します。要素

    .css() メソッドを使用して 20 を超える要素の CSS を変更する場合は、代わりにスタイル タグをページに追加することを検討してください。これにより、速度が 60% 近く向上する可能性があります。

    コードをコピー コードは次のとおりです:
    // 要素は 20 個まで問題ありません。その後は遅い:
    $( "a.swedberg" ).css( "color", "#0769ad" );

    // はるかに高速:
    $( "")
    .appendTo( "head" );
    jQuery をブラック ボックスとして扱わないでください

    jQuery ソース コードをドキュメントとして扱い、お気に入り (http://bit.ly/jqsource) に保存して、頻繁に参照できます。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Windows 10 と Windows 11 のパフォーマンス比較: どちらが優れていますか? Windows 10 と Windows 11 のパフォーマンス比較: どちらが優れていますか? Mar 28, 2024 am 09:00 AM

    Windows 10 と Windows 11 のパフォーマンス比較: どちらが優れていますか?テクノロジーの継続的な開発と進歩により、オペレーティング システムは常に更新され、アップグレードされます。世界最大のオペレーティング システム開発者の 1 つとして、Microsoft の Windows シリーズ オペレーティング システムは常にユーザーから大きな注目を集めてきました。 2021 年、Microsoft は Windows 11 オペレーティング システムをリリースし、広範な議論と注目を引き起こしました。では、Windows 10 と Windows 11 のパフォーマンスの違いは何でしょうか?

    Win11 と Win10 システムのパフォーマンスを比較すると、どちらの方が優れていますか? Win11 と Win10 システムのパフォーマンスを比較すると、どちらの方が優れていますか? Mar 27, 2024 pm 05:09 PM

    Windows オペレーティング システムは、常にパーソナル コンピューターで最も広く使用されているオペレーティング システムの 1 つであり、最近 Microsoft が新しい Windows 11 システムを発売するまで、Windows 10 は長い間 Microsoft の主力オペレーティング システムでした。 Windows 11 システムのリリースに伴い、Windows 10 と Windows 11 システムのパフォーマンスの違いに関心が集まっていますが、どちらの方が優れているのでしょうか?まずはWを見てみましょう

    Kirin 8000 プロセッサが Snapdragon シリーズと競合: 誰が王になれるでしょうか? Kirin 8000 プロセッサが Snapdragon シリーズと競合: 誰が王になれるでしょうか? Mar 25, 2024 am 09:03 AM

    モバイルインターネットの時代において、スマートフォンは人々の日常生活に欠かせないものになりました。多くの場合、スマートフォンのパフォーマンスはユーザー エクスペリエンスの品質に直接影響します。スマートフォンの「頭脳」であるプロセッサーの性能は特に重要です。市場では、Qualcomm Snapdragon シリーズは常に強力なパフォーマンス、安定性、信頼性の代表格であり、最近では Huawei も独自の Kirin 8000 プロセッサを発売し、優れたパフォーマンスを備えていると言われています。一般ユーザーにとって、性能の良い携帯電話をいかに選ぶかは重要な課題となっている。今日はそうします

    Embedding サービスのローカル実行パフォーマンスは OpenAI Text-Embedding-Ada-002 を上回っており、とても便利です。 Embedding サービスのローカル実行パフォーマンスは OpenAI Text-Embedding-Ada-002 を上回っており、とても便利です。 Apr 15, 2024 am 09:01 AM

    Ollama は、Llama2、Mistral、Gemma などのオープンソース モデルをローカルで簡単に実行できるようにする非常に実用的なツールです。この記事では、Ollamaを使ってテキストをベクトル化する方法を紹介します。 Ollama をローカルにインストールしていない場合は、この記事を読んでください。この記事では、nomic-embed-text[2] モデルを使用します。これは、短いコンテキストおよび長いコンテキストのタスクにおいて OpenAI text-embedding-ada-002 および text-embedding-3-small よりも優れたパフォーマンスを発揮するテキスト エンコーダーです。 o が正常にインストールされたら、nomic-embed-text サービスを開始します。

    さまざまな Java フレームワークのパフォーマンスの比較 さまざまな Java フレームワークのパフォーマンスの比較 Jun 05, 2024 pm 07:14 PM

    さまざまな Java フレームワークのパフォーマンス比較: REST API リクエスト処理: Vert.x が最高で、リクエスト レートは SpringBoot の 2 倍、Dropwizard の 3 倍です。データベース クエリ: SpringBoot の HibernateORM は Vert.x や Dropwizard の ORM よりも優れています。キャッシュ操作: Vert.x の Hazelcast クライアントは、SpringBoot や Dropwizard のキャッシュ メカニズムよりも優れています。適切なフレームワーク: アプリケーションの要件に応じて選択します。Vert.x は高パフォーマンスの Web サービスに適しており、SpringBoot はデータ集約型のアプリケーションに適しており、Dropwizard はマイクロサービス アーキテクチャに適しています。

    PHP 言語と Go 言語の比較: 大きなパフォーマンスの違い PHP 言語と Go 言語の比較: 大きなパフォーマンスの違い Mar 26, 2024 am 10:48 AM

    PHP と Go は一般的に使用される 2 つのプログラミング言語であり、それぞれに異なる特徴と利点があります。その中でも性能差は誰もが一般的に気にする問題です。この記事では、パフォーマンスの観点から PHP 言語と Go 言語を比較し、具体的なコード例を通じてパフォーマンスの違いを示します。まずは、PHPとGo言語の基本的な機能を簡単に紹介します。 PHP は、もともと Web 開発用に設計されたスクリプト言語で、学習と使用が簡単で、Web 開発の分野で広く使用されています。 Go 言語は、Google によって開発されたコンパイル言語です。

    PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 May 03, 2024 pm 09:03 PM

    PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

    C++ 関数はプログラムのパフォーマンスにどのような影響を与えますか? C++ 関数はプログラムのパフォーマンスにどのような影響を与えますか? Apr 12, 2024 am 09:39 AM

    C++ プログラムのパフォーマンスに対する関数の影響には、関数呼び出しのオーバーヘッド、ローカル変数、およびオブジェクト割り当てのオーバーヘッドが含まれます。 関数呼び出しのオーバーヘッド: スタック フレーム割り当て、パラメーター転送、および制御転送が含まれます。これは、小規模な関数に大きな影響を与えます。ローカル変数とオブジェクト割り当てのオーバーヘッド: ローカル変数やオブジェクトの作成と破棄が大量に行われると、スタック オーバーフローやパフォーマンスの低下が発生する可能性があります。

    See all articles