본문으둜 κ±΄λ„ˆλ›°κΈ°

[Easy] πŸ“„ <script>, <script async>, <script defer>

κ°œμš”β€‹

HTMLμ—μ„œ JavaScript νŒŒμΌμ„ λ‘œλ“œν•˜λŠ” μ£Όμš” 방법은 μ„Έ κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€:

  1. <script>
  2. <script async>
  3. <script defer>

이 μ„Έ κ°€μ§€ 방법은 슀크립트λ₯Ό λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•  λ•Œ μ„œλ‘œ λ‹€λ₯Έ λ™μž‘μ„ ν•©λ‹ˆλ‹€.

상세 비ꡐ​

<script>​

  • λ™μž‘: λΈŒλΌμš°μ €κ°€ 이 νƒœκ·Έλ₯Ό λ§Œλ‚˜λ©΄ HTML νŒŒμ‹±μ„ μ€‘λ‹¨ν•˜κ³ , 슀크립트λ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ‹€ν–‰ν•œ ν›„ HTML νŒŒμ‹±μ„ μž¬κ°œν•©λ‹ˆλ‹€.
  • μ‚¬μš© μ‹œμ : νŽ˜μ΄μ§€ λ Œλ”λ§μ— ν•„μˆ˜μ μΈ μŠ€ν¬λ¦½νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€.
  • μž₯점: μŠ€ν¬λ¦½νŠΈκ°€ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 것을 보μž₯ν•©λ‹ˆλ‹€.
  • 단점: νŽ˜μ΄μ§€ λ Œλ”λ§μ΄ 지연될 수 μžˆμŠ΅λ‹ˆλ‹€.
<script src="important.js"></script>

<script async>​

  • λ™μž‘: λΈŒλΌμš°μ €κ°€ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ 슀크립트λ₯Ό λ‹€μš΄λ‘œλ“œν•˜λ©΄μ„œ HTML νŒŒμ‹±μ„ κ³„μ†ν•©λ‹ˆλ‹€. 슀크립트 λ‹€μš΄λ‘œλ“œκ°€ μ™„λ£Œλ˜λ©΄ μ¦‰μ‹œ μ‹€ν–‰λ˜λ©°, HTML νŒŒμ‹±μ΄ 쀑단될 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© μ‹œμ : 뢄석 λ˜λŠ” κ΄‘κ³  μŠ€ν¬λ¦½νŠΈμ™€ 같은 독립적인 μŠ€ν¬λ¦½νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€.
  • μž₯점: HTML νŒŒμ‹±μ„ μ°¨λ‹¨ν•˜μ§€ μ•ŠμœΌλ©°, νŽ˜μ΄μ§€ λ‘œλ”© 속도λ₯Ό ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 단점: μ‹€ν–‰ μˆœμ„œκ°€ 보μž₯λ˜μ§€ μ•ŠμœΌλ©°, DOM이 μ™„μ „νžˆ λ‘œλ“œλ˜κΈ° 전에 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€.
<script async src="analytics.js"></script>

<script defer>​

  • λ™μž‘: λΈŒλΌμš°μ €κ°€ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ 슀크립트λ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ§€λ§Œ, HTML νŒŒμ‹±μ΄ μ™„λ£Œλœ 후에 μ‹€ν–‰ν•©λ‹ˆλ‹€. μ—¬λŸ¬ defer μŠ€ν¬λ¦½νŠΈλŠ” HTMLμ—μ„œμ˜ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.
  • μ‚¬μš© μ‹œμ : μ™„μ „ν•œ DOM ꡬ쑰가 ν•„μš”ν•˜μ§€λ§Œ μ¦‰μ‹œ ν•„μš”ν•˜μ§€λŠ” μ•Šμ€ μŠ€ν¬λ¦½νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€.
  • μž₯점: HTML νŒŒμ‹±μ„ μ°¨λ‹¨ν•˜μ§€ μ•Šκ³ , μ‹€ν–‰ μˆœμ„œλ₯Ό 보μž₯ν•˜λ©°, DOM에 μ˜μ‘΄ν•˜λŠ” μŠ€ν¬λ¦½νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€.
  • 단점: μŠ€ν¬λ¦½νŠΈκ°€ μ€‘μš”ν•œ 경우 νŽ˜μ΄μ§€μ˜ μΈν„°λž™μ…˜ κ°€λŠ₯ μ‹œκ°„μ΄ 지연될 수 μžˆμŠ΅λ‹ˆλ‹€.
<script defer src="ui-enhancements.js"></script>

사둀​

데이트λ₯Ό μ€€λΉ„ν•˜κ³  μžˆλ‹€κ³  상상해 λ³΄μ„Έμš”:

  1. <script>: λͺ¨λ“  μ€€λΉ„λ₯Ό λ©ˆμΆ”κ³  μƒλŒ€λ°©μ—κ²Œ μ „ν™”ν•΄μ„œ 데이트 μ„ΈλΆ€ 사항을 ν™•μΈν•˜λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. μ†Œν†΅μ€ ν™•μ‹€ν•˜μ§€λ§Œ μ€€λΉ„ μ‹œκ°„μ΄ 지연될 수 μžˆμŠ΅λ‹ˆλ‹€.

  2. <script async>: λΈ”λ£¨νˆ¬μŠ€ μ΄μ–΄ν°μœΌλ‘œ μƒλŒ€λ°©κ³Ό ν†΅ν™”ν•˜λ©΄μ„œ μ€€λΉ„ν•˜λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. νš¨μœ¨μ€ μ˜¬λΌκ°€μ§€λ§Œ, 톡화에 λ„ˆλ¬΄ μ§‘μ€‘ν•˜λ‹€ μ˜·μ„ 잘λͺ» μž…μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

  3. <script defer>: μƒλŒ€λ°©μ—κ²Œ λ©”μ‹œμ§€λ₯Ό 보내 μ€€λΉ„κ°€ λλ‚˜λ©΄ λ‹€μ‹œ μ „ν™”ν•˜κ² λ‹€κ³  μ•Œλ¦¬λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 쀀비에 집쀑할 수 있고, λͺ¨λ“  것이 μ€€λΉ„λœ 후에 μ œλŒ€λ‘œ μ†Œν†΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ μ‚¬μš© ν˜„ν™©β€‹

λͺ¨λ˜ ν”„λ ˆμž„μ›Œν¬ 개발 ν™˜κ²½μ—μ„œλŠ” 일반적으둜 <script>λ₯Ό μˆ˜λ™μœΌλ‘œ μ„€μ •ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ViteλŠ” 기본적으둜 module, 즉 defer λ™μž‘μ„ μ±„νƒν•©λ‹ˆλ‹€.

<script type="module" src="/src/main.js"></script>

Google Analytics λ“± νŠΉμˆ˜ν•œ μ„œλ“œνŒŒν‹° 슀크립트의 κ²½μš°λŠ” μ˜ˆμ™Έμž…λ‹ˆλ‹€.

<script async src="https://www.google-analytics.com/analytics.js"></script>