ブラウザーの JavaScript のパフォーマンスは、開発者が直面する最も深刻なユーザビリティの問題と考えられます。この記事では、主に高パフォーマンスの JavaScript の読み込み順序と実行原理に関する関連情報をサンプル コードを通じて紹介します。非常に詳しく書かれており、すべての人の学習や仕事に参考となる学習価値があります。必要な友人は編集者に従って一緒に学習できます。 ブラウザが タグに遭遇すると、ブラウザはまず外部リンク ファイルをダウンロードしてから実行する必要があり、このプロセス中、ページのレンダリングとユーザーの操作は完全にブロックされます。 </p> <p>スクリプトを置くのに最適な場所はどこですか? </p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/2e61a312d4692d3148ef28a89734effe-1.png"></p> <p>スクリプトがページのレンダリングをブロックし、すべてがダウンロードされて実行されるまでページのレンダリングが続行されないため、この状況には間違いなく深刻なパフォーマンスの問題があります。下の図はコードの実行シーケンスです</p>。 <p> <img alt="" src="https://img.php.cn/upload/article/000/054/025/2e61a312d4692d3148ef28a89734effe-2.png"><br></p>最初の js ファイルがダウンロードされますが、2 番目の js ファイルは、最初の js ファイルが完全にダウンロードされるまで実行されません。残念ながら、現在、IE8、Firefox3.5、Safari4、および Chrome2 ではすべて、js ファイルの並列ダウンロードが可能です。 、、、js のダウンロード プロセスは、次のような他のリソースのダウンロードを引き続きブロックします: 写真<p></p>そこで、パフォーマンスを向上させる方法の 1 つとして、スクリプトを本文の最後に配置します<p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/6cd010162f08654e1984b5aacae9b92b-3.png"><br></p>スクリプトを整理します<p><br> </p>各 <script> タグにより、ダウンロード時にページのレンダリングがブロックされるため、ページに含まれる <script> タグの数を減らすことが重要です。 解決策: 複数の js ファイルをマージしてパッケージ化できます。これの利点は、HTTP リクエストの削減に加えて、遅延時間を最小限に抑えることができ、ページ全体のパフォーマンスが大幅に向上することです。 <p><br></p> 一般に、100 KB のファイルを 1 つダウンロードする方が、25 KB のファイルを 4 つダウンロードするよりも高速です。 <p></p>複数の外部リンク js ファイルがある場合、それらを 1 つの js ファイルにマージできます<p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/6cd010162f08654e1984b5aacae9b92b-4.png"><br></p>ノンブロッキング スクリプト<p><br></p> 1 つの大きな js ファイルをダウンロードすると HTTP リクエストが 1 つだけ生成され、閲覧は一時停止されますこの状況を回避するには、サーバーに時間がかかるため、js ファイルをページに徐々に読み込む必要があります。 <p></p>遅延スクリプト<p><br></p> defer 属性は、この要素に含まれるスクリプトの実行を遅延できることを示しますが、それをサポートしているのは IE4 以降と Firefox3.5 以降のブラウザのみです<p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/6cd010162f08654e1984b5aacae9b92b-5.png"><br></p>簡単に言えば、遅延メカニズムは待機することです。 DOM がロードされるまでは、js ファイルをダウンロードするだけで、ブラウザーの他のプロセスはブロックされません<p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/6cd010162f08654e1984b5aacae9b92b-6.png"><br></p> defer 属性をサポートしていないブラウザーでポップアップ表示される順序は、defer、script、load です。 <p><br></p> defer 属性をサポートするブラウザーのポップアップ 順序は次のとおりです: script、defer、load<p><br></p>したがって、onload イベントが実行される前に defer が呼び出されます<p></p>動的スクリプト<p><br></p>動的を注入するには 2 つの方法があります1 つ目はスクリプト タグを動的に作成することで、2 つ目は XMLHttpRequest インジェクション ページを渡すことです <p><br></p> まず最初の方法の使用方法について説明します: <p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/2d706dbfd8de51e67d08efeda7ddb02c-7.png"></p> このテクノロジーの重要な点は、次のとおりです。ダウンロードが開始されると、ファイルのダウンロードと実行プロセスはページの他のプロセスをブロックしませんが、動的スクリプト ノードが js ファイルをダウンロードすると、返されたコードがすぐに実行されます (Firefox と Opera を除く)。以前のすべての動的スクリプト ノードが実行を完了するまで待ちます) <p></p> 主流のブラウザでは、<script> イベントを受信するとロードがトリガーされますが、IE ブラウザにはそれがないため、次のメソッドをカプセル化する必要があります。すべてのブラウザと互換性があります<p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/2d706dbfd8de51e67d08efeda7ddb02c-8.png"><br></p> この方法の欠点は、ファイルの読み込み順序を知る必要があることです。js ファイルが多すぎると、依存関係が複雑になると、順序の管理が困難になります。読み込まれた依存関係の数<p></p> <p><img alt="" src="https://img.php.cn/upload/article/000/054/025/2d706dbfd8de51e67d08efeda7ddb02c-9.png"></p> このように書かれたコードは保守が困難です<p></p> スクリプトを動的に作成する 2 番目の方法は、実際にはインラインでスクリプトを作成するのと同じです。作成された <script> 要素がページに追加されると、コードがすぐに実行され、準備が整います。 <p></p> <p>利点: js コードはダウンロードされますが、すぐには実行されません。この方法では、準備が整うまでスクリプトの実行を延期できます。</p> <p>欠点: js ファイルは、ページは同じドメイン内にあり、CDN から js ファイルをダウンロードすることはできません。通常、大規模な Web アプリケーションではこの方法を使用しません。 </p> <p><br> ダイナミクスに必要なコードを追加します。まず、ページの残りの部分を初期化するふりをします</p> <p><br>[画像のアップロードに失敗しました...(image-dd3f9-1515902024710)]</p> <p> 上記で多くのことを紹介しましたが、いくつかの動的コードをお勧めしたいと思います。遅延読み込みライブラリを紹介します</p> <p><br> YUI3、LazyLoad、LABjsなどのライブラリがありますが、個人的にはLABjsライブラリの方が使いやすいと思いますが、使い方は説明しません。ここでそれを使用します。 </p> <p>概要: </p> <p><br>js のパフォーマンスを向上させるためのいくつかの側面</p> <p><br> 1. </body> タグを閉じる前に、すべての <script> タグをページの下部に配置します。これにより、スクリプトが実行される前にページが確実にレンダリングされます</p> <p><br> 2. スクリプトをマージします。ページ内の <script> タグが少ないほど、読み込みと応答が速くなります。これは、外部リンク ファイルや埋め込みスクリプトに関係なく当てはまります </p> <p><br> 3. ブロックせずに js をダウンロードする方法はたくさんあります 3.1 <script> タグの defer 属性を使用します 3.2 動的に作成された <script> 要素を使用してダウンロードして実行しますコード </p> <p><br> 3.3 XHR オブジェクトを使用して js コードをダウンロードし、ページに挿入します </p> <p> 上記の戦略を通じて、大量の js を必要とする Web アプリケーションの実際のパフォーマンスを大幅に向上させることができます。 <br></p>関連する推奨事項: <p><br></p>CSSの読み込みと読み込み順序の簡単な分析<p></p> <p></p>html、cssおよびjsファイルの読み込み順序と実行<p></p> <p><a href="http://www.php.cn/css-tutorial-383191.html" target="_self">jqueryの$(document).ready()およびonload読み込み順序_javascriptスキル</a></p>