[WEB]スクリプトのロードポイント-async&defer
📙 ブラウザがHTMLを解析するとどうなりますか?
スクリプトのロードポイントを理解する前に、ブラウザがHTML
ドキュメントを解析したときに発生したことを理解したほうがいいです.
HTTP
モジュールまたはファイルシステムに送信されたリソースフロー(リソースフロー)を読み出すことによって、DOM(Document Object Model)
ツリーがパケットによって生成される.ドキュメント要素の表示方法を決定する要素をグループ化します.
DOMツリーを作成するときに、フラクタルを使用してレンダーツリーを作成します.表示する順序とドキュメントのビジュアル要素として、正しい順序でコンテンツを描画するには、レンダーツリーと呼ばれる個別のツリー構造が必要です.
レンダーツリーを生成するときに、各レンダーオブジェクトの位置とサイズを持つプロセスをレイアウトと呼びます.
描画フェーズで、レンダーツリーをブラウズし、特定のメモリ領域にRGB値を入力するプロセスです.
パシン?
ドキュメントの割り当ては、ドキュメントから読み込まれたデータを理解し、使用可能な形式に変換することを意味します.このような動作をする機能やプログラムを解析器と呼ぶ.
ブラウザでHTMLドキュメントを分割した結果を、分割ツリー(parse tree)またはシンタックスツリー(syntax tree)と呼びます.
📕 一般スクリプトのロード
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<link rel="stylesheet" type="text/css" href="dark.css" />
<script src="jquery.js"></script>
<script src="main.js"></script>
</head>
<body>
...
</body>
</html>
上記の文書をロードすると、ブラウザはまずHTML
をグループ化し、外部リソースCSS、JSファイルをロードする.DOMツリーが完了すると、イメージファイルまたは外部リソースがロードされ、すべての操作が完了します.
ここで重要なのは、ブラウザが
script
を解析したときにどのようなことが起こるかということです.通常、インラインコードではJavaScriptがすぐに実行され、ファイルに渡されると、転送が完了したときに実行されます.問題は、ブラウザがJavaScriptをダウンロードして実行すると、以下のようにドキュメントのパケットが停止します.一方、CSSはDOMツリーを変更しないため、ドキュメントのグループ化を待つか停止することはありません.
上のコードでは、スタイルをロードしてからスクリプトをロードしますが、スクリプトファイルをロードしてからスクリプトにスタイル情報を要求すると、エラーの結果、ユーザーエクスペリエンス(UX)が低下します.このような問題はよくないように見えるが、頻繁に発生している.
そこで、上記のコードをbodyタグの末尾に置くことをお勧めします.以下に示します.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<link rel="stylesheet" type="text/css" href="dark.css" />
</head>
<body>
...
<script src="jquery.js"></script>
<script src="main.js"></script>
</body>
</html>
📘 スクリプトロード方式async,defer
asyncプロパティを使用する場合
async
プロパティを使用して、スクリプトファイルが非同期で実行できることを示します.つまり、ブラウザがasync
のプロパティを持つスクリプトタグに遭遇した場合、HTMLパケットは停止されず、スクリプトの実行準備ができたときに実行されます.<script async src="main.js"></script>
スクリプトの実行順序はダウンロード完了時に決定されるので、実行順序が重要なスクリプトに対して
async
属性を使用する場合は特に注意してください.deferプロパティを使用する場合
defer
プロパティは、ブラウザがHTMLパケットの終了時にスクリプトファイルを実行することを示します.<script defer src="main.js"></script>
上の図のように、ブラウザがスクリプトのダウンロードを完了しても、スクリプトはすぐに実行されません.また、
async
とは異なり、呼び出しの順序で実行される.いつ使えばいいですか。
これは、スクリプトの依存性によって非常に役立ちます.スクリプトに依存しないファイルを実行する場合は、
async
を適切に使用します.依存性と実行順序が重要な場合は、defer
を使用すると便利です.▼▼▼定理
📚 コメントリンク
NAVER D 2-ブラウザはどのように動作しますか?
Reference
この問題について([WEB]スクリプトのロードポイント-async&defer), 我々は、より多くの情報をここで見つけました https://velog.io/@jimmy0417/WEB-스크립트의-로드-시점-async-deferテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol