HTML ドキュメント内の タグの配置は、HTML コンテンツのレンダリングに関連した JavaScript の実行タイミングに大きな影響を与えます。 このガイドでは、4 つの主要なアプローチを検討し、その実行プロセスと最適な使用例を詳しく説明します。 1. 内のタグ // JavaScript code here Script in Head Hello, World! 実行プロセス: ブラウザは HTML ドキュメントを上から下に解析します。 内で タグが見つかると、スクリプトのダウンロードと実行中に HTML レンダリングが一時停止します。 スクリプトの実行後、ブラウザは HTML 処理を再開します。 欠点: スクリプトが大きいか読み込みが遅いと、ページのレンダリングが遅れ、画面が空白になる可能性があります。 このスクリプト内で DOM 要素を操作しようとすると、要素がまだロードされていないために失敗する可能性があります。 理想的な使用例: 分析や構成コードなど、すぐには必要ない機能を含むスクリプト。 2. の最後にある タグ Script at Bottom Hello, World! // JavaScript code here 実行プロセス: ブラウザは HTML コンテンツ全体をロードしてレンダリングします。 の末尾にある タグは、ページのレンダリング後に処理および実行されます。 利点: スクリプトの実行前に HTML の読み込みが完了していることを確認します。 レンダリングの遅延を防ぎ、ユーザー エクスペリエンスを向上させます。 DOM 要素はすぐに操作できます。 欠点: 完全な HTML レンダリング後に JavaScript の実行が発生するため、ページの読み込み時間がわずかに増加しました。 理想的な使用例: ページ コンテンツと対話するスクリプト (イベント リスナー、要素の変更など)。 3. async 属性のタグ Script with Async Hello, World! 実行プロセス: ブラウザは HTML を順番に読み込みます。 async スクリプトが見つかると、HTML の読み込みを続行しながら、同時にスクリプトをダウンロードします。 ダウンロードされると、スクリプトはすぐに実行され、レンダリングが一時停止され、HTML の読み込みが再開されます。 利点: ノンブロッキング: ページのレンダリングを遅らせることなく、スクリプトの読み込みがバックグラウンドで行われます。 並列ダウンロードによりページの読み込みが高速化されます。 欠点: 複数の async スクリプトが存在する場合、スクリプトは予期しない順序で実行される可能性があります。 HTML 構造に依存するスクリプトは途中で実行され、エラーが発生する可能性があります。 理想的な使用例: 他のスクリプトや HTML 要素に依存しない、分析、広告、ソーシャル メディア ウィジェットなどの独立したスクリプト。 4. defer 属性のタグ // JavaScript code here Script in Head Hello, World! 実行プロセス: ブラウザは HTML を順番に読み込みます。 defer スクリプトは HTML と同時にダウンロードされますが、実行されるのは HTML 全体が解析された後です。 実行は DOMContentLoaded イベントの直前に行われます。 利点: ページの読み込みが完了した後にスクリプトが実行されるようにします。 複数の defer スクリプトが使用される場合、スクリプトの実行順序を維持します。 完全に利用可能な DOM に依存するスクリプトに適しています。 理想的な使用例: 完全にロードされた後に DOM を操作するスクリプト。 比較表 メソッド 実行時間 ブロックのレンダリング ベストユースケース Method Execution Time Blocks Rendering Best Use Case in Before HTML load Yes Configuration, early execution logic at end of After HTML load No DOM manipulation, event handling When script is downloaded No (except during execution) Analytics, ads, independent scripts After HTML parse No DOM-dependent scripts で HTML ロード前 はい 設定、初期実行ロジック の最後に HTML ロード後 いいえ DOM 操作、イベント処理 スクリプトがダウンロードされるとき いいえ (実行中を除く) 分析、広告、独立したスクリプト HTML 解析後 いいえ DOM に依存するスクリプト テーブル> 結論: ベストプラクティス ページコンテンツと対話し、完全にロードされた DOM を必要とするスクリプトには、 の最後に を使用します。 分析や広告などの独立したスクリプトには を使用します。 ページの読み込みをスムーズにするために属性を使用しない場合は、スクリプトを async の一番下に配置します。defer レンダリングの妨害を防ぐために絶対に必要な場合を除き、 または を使用せずに にスクリプトを配置することは避けてください。 タグの使用法をマスターすることは、Web アプリケーションを最適化するために重要です。 インライン、内部、外部、非同期、または遅延スクリプトのいずれかを選択すると、パフォーマンスの向上、コードの保守性の向上、優れたユーザー エクスペリエンスが可能になります。