HTML 문서 내의 <script>
태그 배치는 HTML 콘텐츠 렌더링과 관련된 JavaScript 실행 타이밍에 큰 영향을 미칩니다. 이 가이드에서는 실행 프로세스와 최적의 사용 사례를 자세히 설명하는 네 가지 주요 접근 방식을 살펴봅니다.
1. <script>
<head>
<code class="language-html"><head> <script> // JavaScript code here </script> <title>Script in Head</title> </head> <h1>Hello, World!</h1></code>
실행과정:
<script>
에서 <head>
태그가 발견되면 스크립트가 다운로드 및 실행되는 동안 HTML 렌더링이 일시 중지됩니다.단점:
이상적인 사용 사례:
2. <script>
<body>
<code class="language-html"><title>Script at Bottom</title> <h1>Hello, World!</h1> <script> // JavaScript code here </script></code>
실행과정:
<script>
끝에 있는 <body>
태그는 페이지 렌더링 후 처리되어 실행됩니다.장점:
단점:
이상적인 사용 사례:
3. <script>
async
속성
<code class="language-html"><head> <script async src="script.js"></script> <title>Script with Async</title> </head> <h1>Hello, World!</h1></code>
실행과정:
async
스크립트를 발견하면 HTML 로딩을 계속하면서 동시에 스크립트를 다운로드합니다.장점:
단점:
async
스크립트가 여러 개 있으면 스크립트가 예측할 수 없는 순서로 실행될 수 있습니다.이상적인 사용 사례:
4. <script>
defer
속성
<code class="language-html"><head> <script> // JavaScript code here </script> <title>Script in Head</title> </head> <h1>Hello, World!</h1></code>
실행과정:
defer
스크립트는 HTML과 동시에 다운로드되지만 전체 HTML이 구문 분석된 후에만 실행됩니다.DOMContentLoaded
이벤트 직전에 발생합니다.장점:
defer
스크립트를 여러 개 사용하는 경우 스크립트 실행 순서를 유지합니다.이상적인 사용 사례:
비교표
Method | Execution Time | Blocks Rendering | Best Use Case |
---|---|---|---|
<script> in <head>
|
Before HTML load | Yes | Configuration, early execution logic |
<script> at end of <body>
|
After HTML load | No | DOM manipulation, event handling |
<script async> |
When script is downloaded | No (except during execution) | Analytics, ads, independent scripts |
<script defer> |
After HTML parse | No | DOM-dependent scripts |
<스크립트 연기>
<script>
<body>
<script async>
끝에 <body>
분석 및 광고와 같은 독립적인 스크립트에는 <head>
부드러운 페이지 로딩을 위해 속성을 사용하지 않는 경우 async
하단에 스크립트를 배치하세요.defer
없이 <script>
에 스크립트를 배치하지 마세요.
위 내용은 더 나은 웹 개발을 위해 HTML에서