はしがき
JavaScript スクリプトの読み込みで多くの問題に遭遇したことがあるかと思います。主にいくつかの点で——
1> 同期スクリプトと非同期スクリプトによって引き起こされるファイルの読み込み、ファイルの依存関係、および実行順序の問題
2> 同期スクリプトと非同期スクリプトによって引き起こされるパフォーマンスの最適化の問題
スクリプトの読み込みに関連するすべての側面を完全に理解することは、実際的な問題の解決に役立つだけでなく、パフォーマンスの最適化を把握して実装するのにも役立ちます。
まず、スクリプト タグ コードを確認します—

その中で、test.js の内容—
alert('私はヘッドのスクリプトコードです。ここでjsを実行すると、ボディのコンテンツのレンダリングが開始されます!');
アラートが一時停止ポイントであり、この時点ではページが空白であることがわかります。ただし、この時点でページ全体がロードされていることに注意してください。本文に特定の src 属性を持つタグ (上記の img タグなど) が含まれている場合、ブラウザは関連コンテンツのロードをすでに開始しています。つまり、js エンジンとレンダリング エンジンの動作タイミングは相互に排他的であることに注意してください (書籍によっては、これを UI スレッドと呼んでいます)。
したがって、ページの見栄えを良くし、使いやすくするスクリプトはすぐにロードし、後でロードできるスクリプトは後でロードする必要があります。
1. スクリプトの実行の遅延
ページの
タグの最後にスクリプトを配置することがますます一般的になってきています。このようにして、ユーザーはページをより速く表示できる一方で、スクリプトはロードされた DOM 要素を直接操作できるようになります。ほとんどのスクリプトにとって、この「移動」は大きな改善です。ページモデルは次のとおりです——
これにより、ページのレンダリング時間が大幅に短縮されますが、bodyScript が読み込まれる前にユーザーがページを操作する機会が得られる可能性があることに注意してください。その理由は、ドキュメント全体が読み込まれるまでブラウザはこれらのスクリプトを読み込むことができないためです。これが、低速接続で送信される大きなドキュメントのボトルネックになる可能性があります。
理想的には、スクリプトの読み込みはドキュメントの読み込みと同時に行われ、DOM のレンダリングに影響を与えないようにする必要があります。この方法では、スクリプトは <script> タグの順序ですでに読み込まれているため、ドキュメントの準備ができたらスクリプトを実行できます。 </script>
この要件を満たすために defer を使用できます。つまり、
defer 属性を追加することは、ブラウザに「このスクリプトのロードを今すぐ開始してください。ただし、ドキュメントの準備ができ、defer 属性を持つ以前のすべてのスクリプトの実行が完了するまで待ってから実行してください」と伝えることと同じです。
このように、head タグに遅延スクリプトを配置すると、body タグにスクリプトを配置した場合のすべての利点が得られ、大きなドキュメントの読み込み速度も大幅に向上します。この時のページモードは——
ただし、すべてのブラウザーが defer をサポートしているわけではありません (一部の最新のブラウザーでは、defer が宣言されている場合、内部スクリプトは document.write および DOM レンダリング操作を実行しません。IE4 はすべて defer 属性をサポートしています)。つまり、ドキュメントのロード後に遅延スクリプトを実行できるようにするには、すべての遅延スクリプト コードを jQuery の $(document).ready などの構造にカプセル化する必要があります。訪問者のほぼ 97% が並列読み込みのメリットを享受し、残りの 3% は依然として完全に機能する JavaScript にアクセスできるため、これには価値があります。
2. スクリプトの完全な並列化
スクリプトの読み込みと実行を 1 段階速くします。遅延スクリプトが次々に実行されるのを待ちたくありません (遅延という言葉は、ドキュメントが読み込まれるのを静かに待つという順序立てたキューのシナリオを思い出させます)。これらのスクリプトを実行する前にドキュメントの準備ができるまで待ちたいと考えています。できるだけ早くロードして、できるだけ早くこれらのスクリプトを実行したいと考えています。ここで HTML5 の async 属性が思い浮かびますが、これは混沌とした無秩序であることに注意してください。
たとえば、まったく無関係な 2 つのサードパーティ スクリプトをロードします。これらのスクリプトがなくてもページは問題なく動作します。どちらが最初に実行され、どちらが最後に実行されるかは気にしません。したがって、これらのサードパーティ スクリプトで async 属性を使用することは、一銭も費やすことなく実行速度を向上させることと同じです。
async 属性は HTML5 の新機能です。この関数は defer に似ており、スクリプトのダウンロード中に DOM レンダリングを可能にします。ただし、スクリプトはダウンロード後できるだけ早く実行されます (つまり、JS エンジンはアイドル状態になるとすぐに実行されます)。スクリプトが順番に実行されるという保証はありません。これらは onload イベントの前に完了します。
Firefox 3.6、Opera 10.5、IE 9、および最新の Chrome と Safari はすべて、async 属性をサポートしています。 async と defer を同時に使用できるため、IE 4 以降のすべての IE は非同期読み込みをサポートしますが、async は defer を上書きすることに注意してください。
すると、この時のページモデルは以下の通りです——

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章整理了20+Vue面试题分享给大家,同时附上答案解析。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









