Search

defer, async

νƒœκ·Έ
Select
μ„Ήμ…˜0

Javascript load

<script> νƒœκ·Έμ˜ μœ„μΉ˜μ— λ”°λ₯Έ 문제
DOM 은 λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ 엔진을 μ΄μš©ν•΄ html 을 ν•œμ€„μ”© parsing ν•˜λ©΄μ„œ μƒμ„±λ©λ‹ˆλ‹€. ν•œμ€„μ”© μ½μ–΄μ„œ λ Œλ”λ§μ„ ν•˜λ‹€κ°€ <script> νƒœκ·Έλ₯Ό λ§Œλ‚˜λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”? 일단 html 파일의 parsing 을 λ©ˆμΆ”κ³  ν•΄λ‹Ή js νŒŒμΌμ„ parsing ν•˜κΈ° μ‹œμž‘ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이 λ•Œ ν•΄λ‹Ήλ˜λŠ” μš”μ†Œκ°€ 아직 객체화 되기 전이라면 μ–΄λ–»κ²Œ λ κΉŒμš”?
개발자 λͺ¨λ“œμ—μ„œ μ—λŸ¬κ°€ λœ¨λŠ”κ²ƒμ„ 확인할 수 μžˆμ„κ²λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 3가지 방법이 μžˆμŠ΅λ‹ˆλ‹€.
β€’
<body> 의 μ΅œν•˜λ‹¨μ—μ„œ <script> μ‹€ν–‰ν•˜κΈ°
β€’
window.onload 등둝
DOM 생성 뿐만 μ•„λ‹ˆλΌ img, script, css λ“±μ˜ 컨텐츠가 μ „λΆ€ λ‘œλ“œλœ ν›„ λ°œμƒν•˜λŠ” 이벀트 μž…λ‹ˆλ‹€.
β€’
DOMContentLoaded μ‚¬μš©
window.onload 와 λ‹€λ₯΄κ²Œ 컨텐츠가 λ‘œλ“œλ˜λŠ”κ²ƒμ„ 기닀릴 ν•„μš” 없이 DOM 생성이 λλ‚˜κ³  λ°”λ‘œ μ΄λ²€νŠΈκ°€ λ°œμƒν•©λ‹ˆλ‹€.
μœ„μ˜ 세가지 방법을 써도 μ–΄μ°Œλ˜λ“  HTML parsing 이 λλ‚˜κ³  λ‚˜μ„œμ•Ό script fetch β†’ script execution 이 λ°œμƒν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λΆˆνŽΈν•¨μ„ 쀄이기 μœ„ν•΄ html5 μ—μ„œλŠ” λ‹€μŒκ³Ό 같은 두 방식이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Javascript defer 와 async

defer
HTML νŒŒμ‹±κ³Ό ν•¨κ»˜ λΉ„λ™κΈ°λ‘œ JavaScript νŒŒμΌμ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. λ•Œλ¬Έμ— HTML νŒŒμ‹±μ΄ μ™„λ£Œλœ ν›„, JavaScript μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
<script src="" defer></script>
HTML
볡사
async
HTML νŒŒμ‹±κ³Ό ν•¨κ»˜ λΉ„λ™κΈ°λ‘œ JavaScript νŒŒμΌμ„ λΆˆλŸ¬μ˜¨λ‹€λŠ” 점은 defer 와 κ°™μ§€λ§Œ HTML νŒŒμ‹± μ™„λ£Œλ₯Ό 기닀리지 μ•Šκ³  λ¨Όμ € λ‘œλ”©λ˜λŠ” JavaScript νŒŒμΌλΆ€ν„° 싀행이 μ‹œμž‘λœλ‹€λŠ” μ μ—μ„œ 차이가 μžˆμŠ΅λ‹ˆλ‹€.
단, JavaScript νŒŒμΌμ„ μ‹€ν–‰ν•  λ•Œμ—λŠ” HTML νŒŒμ‹±μ΄ μ€‘λ‹¨λ©λ‹ˆλ‹€.
<script src="" ansync></script>
HTML
볡사