<strong>Js のブロックの性質</strong> <br>ブラウザーでの Javascript のパフォーマンスの問題は、最も重要なユーザビリティの問題である可能性があります<br>Js のブロックの性質 ブラウザーは、単一のプロセスを使用して UI プロセスとJsの実行<br>埋め込みか外部かにかかわらず、ページを改変する可能性があるため、すぐにダウンロードして実行してください<br><br><strong>ページのライフサイクルの概念</strong> <br>ダウンロード時間と実行時間<br>スクリプトとリンク本体がヘッドにロードされるまでは何も出力されないため、空白のページが表示されます <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="51820" class="copybut" id="copybut51820" onclick="doCopy('code51820')"><u>コードをコピー </u></a></span> コードは次のとおりです。</div> <div class="codebody" id="code51820"> <br><script type="text/javascript"> <br>document.write("日付は" (new Date().toDateString()) ) ; 複数の js とその他のリソース、ただし画像のダウンロードに影響あり<br>結論、スクリプトを最後に配置してロード<br> </div> <br>スクリプトを整理する<br> <br>目標は遅延を最小限に抑える時間<br>問題<br>複数のスクリプト ファイルを参照し、複数のスクリプト タグを埋め込むと<strong>各 http リクエストによりパフォーマンスのオーバーヘッドが発生します</strong>リンクの直後のスクリプトはエラーになり、CSS が読み込まれるまで待機します。最も正確な描写を得るために<br>結論: スクリプトタグの数を減らす<br>複数のjsファイルを1つにマージ、パッケージ化ツール<br>Yahooのマージプロセッサ<br><br><br>ノンブロッキングスクリプト<br> <br>js は、http リクエストの処理やインターフェイスの更新など、ブラウザの特定のプロセスをブロックする傾向があります。これは最も重要なパフォーマンスの問題です。そのため、js ファイルのサイズを減らし、http リクエストの数を制限する必要があります <br> ただし、豊富な機能とコードの量の間には矛盾があり、それを 1 つのファイルにマージすると、長時間ブラウザがロックされてしまいます。なので、JavaScript ファイルを徐々にロードする必要があります <br>キーポイント: ページがロードされた後に JavaScript ファイルをロードします <strong></strong><br>1. スクリプトのロードを遅らせます <br> <br>defer 属性 <br>ダウンロードする js ファイルが dom 操作を実行しない場合、この属性はファイルを並行してダウンロードできるようにするため、非常に便利です。ただし、onload イベントの後に実行されます。任意のスクリプトタグ <br><strong> 2. 動的読み込みスクリプト </strong> <br>関数 <br><br><strong></strong><br> コードをコピー <br><div class="codetitle"> <span> コード<a style="CURSOR: pointer" data="43534" class="copybut" id="copybut43534" onclick="doCopy('code43534')"><u> </u>functionloadScript(url,callback){ </a>var script = document.createElement('script'); </span>script.type = 'text/javascript'; 🎜>if(script.readyState) { //IE </div>script.onreadyStatechange = function() { <div class="codebody" id="code43534"> if(script.readyState == 'loaded' || script.readyState == 'complete') { <br>script.onreadyStatechange = null; <br> callback(); <br>} <br>} else { <br>script.onload = function(){ <br>callback(); <br>} <br><br> <br>ここではブラウザの互換性に注意してください。<br>このようにロードする必要があるファイルが複数ある場合は、<br><br><br><br><br>コードをコピーします</div> <br><br> コードは次のとおりです:<br><div class="codetitle"> <span>loadScript('file1.js', function(){ <a style="CURSOR: pointer" data="21507" class="copybut" id="copybut21507" onclick="doCopy('code21507')">loadScript ('file2.js',function(){ <u>}) </u>}); </a></span> </div> <div class="codebody" id="code21507">3. XHR スクリプト インジェクション<br> <br><br><br><br> </div>コードをコピー<br><strong></strong> コードは次のとおりです。<br><div class="codetitle"> <span>var xhr = new XMLHttpRequest() <a style="CURSOR: pointer" data="61028" class="copybut" id="copybut61028" onclick="doCopy('code61028')">xhr.open('get ','file1.js',true); <u>xhr.onreadystatechange= function(){ </u> if(xhr.readyState == 4) { </a> if(xhr.status >= 200 && xhr. status <=300 || xhr.status==304) { </span>var oScript = document.createElement('script'); </div> oScript.text = xhr.responseText; oScript); <div class="codebody" id="code61028">} <br>} <br>} <br><br> <br>304 は、キャッシュからテキストを取得するときに ajax を使用することを示します コンテンツをテキストに入れます <br><br><br> その利点<br> <br> 優れた互換性、非同期、欠点: ドメインを拡張できず、CDN からコンテンツを取得できない <br> </div>