😱 html λ¬Έμ„œ λ‚΄ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ 어디에 두면 μ’‹μ„κΉŒ?

μ„œμž¬ν™˜Β·2021λ…„ 11μ›” 13일
0

WEB

λͺ©λ‘ 보기
6/8
이번 μ‹œκ°„μ—λŠ” html λ¬Έμ„œ 내에 슀크립트 νƒœκ·Έλ₯Ό μ–΄λ”” μœ„μΉ˜μ‹œν‚€λ©΄ 쒋을지 μ•Œμ•„λ³΄κΈ°λ‘œ ν•˜μ˜€λ‹€.

일단 λ¨Όμ € κ°„λ‹¨νžˆ μ•Œλ©΄ 쒋을 κ°œλ…μ€ HTML νƒœκ·Έ μ•ˆμ— 슀크립트 νƒœκ·Έκ°€ 있으면 ν•΄λ‹Ή νŒŒμΌμ„ λ‹€
μš΄λ‘œλ“œ ν•˜κ³  μ‹€ν–‰ν•˜λŠ” 2단계λ₯Ό 거치게 λœλ‹€. 그리고 슀크립트 νƒœκ·Έ μ•ˆμ— μ–΄λ–€ μ˜΅μ…˜μ΄ λ“€μ–΄ 있
λŠλƒμ— λ”°λΌμ„œ λ‹€μš΄λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•˜λŠ” 단계λ₯Ό μ—°μ†μ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ”μ§€ μ•„λ‹ˆλ©΄ 그렇지 μ•Šμ€μ§€ μ„€
μ • ν•  수 μžˆλ‹€. μ•„λž˜ μ˜ˆμ‹œλ₯Ό ν†΅ν•΄μ„œ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž.
1. 슀크립트 νŒŒμΌμ„ HEAD μ•ˆμ— λ„£λŠ” 것은 μ§€μ–‘ν•˜μž

λΈŒλΌμš°μ €κ°€ μ›ΉνŽ˜μ΄μ§€λ₯Ό λ‹€μš΄λ‘œλ“œλ₯Ό λ°›κΈ° μœ„ν•΄μ„  제일 λ¨Όμ € htmlλ¬Έμ„œλ₯Ό DOM 으둜 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.
DOM은 λ‚˜μ€‘μ— λ‹€λ£¨κΈ°λ‘œ ν•˜κ³  DOM을 λ§Œλ“€κΈ° μœ„ν•΄ 제일 λ¨Όμ € HTMLλ¬Έμ„œλ₯Ό μœ„μ—μ„œ λΆ€ν„° ν•œ 쀄 μ”© 읽
μ–΄ λ‚΄λ €κ°„λ‹€. 

κ·ΈλŸ¬λ‹€κ°€ μŠ€ν¬λ¦½νŠΈνŒŒμΌμ„ λ§Œλ‚¬μ„ λ•Œ μ„œλ²„λ‘œλΆ€ν„° ν•΄λ‹Ή νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ λ°›μ•„μ•Ό ν•˜λŠ”λ° HEAD νƒœκ·Έ 
μ•ˆμ— 슀크립트 파일이 μžˆμ„ 경우 HTML λ¬Έμ„œλ₯Ό λͺ¨λ‘λ‹€ λ Œλ”λ§ ν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ script νŒŒμΌμ„ 
λ‹€μš΄λ‘œλ“œ ν•˜κ³  μ‹€ν–‰μ‹œν‚€κΈ° λ•Œλ¬Έμ— HTML λ¬Έμ„œκ°€ λ‹€ λ‘œλ”©λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ 진행이 λœλ‹€.

단점
μžλ°”μŠ€ν¬λ¦½νŠΈ 파일이 클 경우 νŽ˜μ΄μ§€κ°€ μ€€λΉ„λ˜κΈ° κΉŒμ§€ λ§Žμ€ μ‹œκ°„μ΄ 걸릴 수 있고 HTML λ¬Έμ„œμ™€ μ—°
관지어 μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ μž‘μ„± ν•  κ²½μš°κ°€ λ§Žμ„ 텐데 HTML νŒŒμΌμ„ λ‹€ λ‹€μš΄λ‘œλ“œ 받지 μ•Šμ€ μƒνƒœ
μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ λ‹€μš΄λ°›κ³  μ‹€ν–‰μ‹œν‚€λŠ” 뢀뢄은 λ¬Έμ œκ°€ λ°œμƒ ν•  수 μžˆλŠ” μš”μ§€κ°€ μžˆλ‹€.

2. body + script
<body>
  <script src="a.js"></script>
</body>

μŠ€ν¬λ¦½νŠΈνŒŒμΌμ„ λ§ˆμ§€λ§‰μ— λ„£κ²Œ 되면 HTML μ»¨ν…μΈ λŠ” λͺ¨λ‘ λ‹€μš΄λ‘œλ“œ 된 후에 μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ λ°›κ³ 
ν•΄λ‹Ή νŒŒμΌμ„ μ‹€ν–‰ν•˜κ²Œ λœλ‹€. 맀우 μŠ€νƒ λ“œν•œ 방법이닀.

λ‹¨μ μœΌλ‘œλŠ” HTML λ¬Έμ„œκ°€ μ€€λΉ„λœ 이후에 μžλ°”μŠ€ν¬λ¦½νŠΈ κ΄€λ ¨ 파일이 λ‹€μš΄λ‘œλ“œ λ˜λ―€λ‘œ 파일 μš©λŸ‰μ΄ μ»€μ„œ
λ‹€μš΄ λ°›λŠ”λ° μ‹œκ°„μ΄ 걸릴 경우 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€. 문제라 함은 μ΅œμ’… νŽ˜μ΄μ§€κ°€ μ™„μ„±λ˜λŠ”λ° μ‹œκ°„μ΄
κ±Έλ¦° λ‹€λŠ” 뢀뢄이닀.

3. head + async μ˜΅μ…˜

<head>
  <script async src="a.js"></script>
  <script async src="b.js"></script>
  <script async src="c.js"></script>
</head>

이런 μ‹μœΌλ‘œ head νƒœκ·Έ μ•ˆμ— script νƒœκ·Έκ°€ 있게 되면 λ§Œλ‚˜λŠ” μˆœκ°„λΆ€ν„° νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ μ‹œν‚€κ³  
μˆœμ„œμ— 상관없이 λ‹€μš΄λ‘œλ“œκ°€ μ™„λ£Œλœ νŒŒμΌλΆ€ν„° 싀행을 μ‹œν‚€κ²Œ λœλ‹€. μ„Έκ°œμ˜ νƒœκ·Έ μž‘μ—…μ΄ μ™„λ£Œλ˜λŠ” μ‹œ
μ κΉŒμ§€ HTML을 νŒŒμ‹±ν•˜λŠ” 것은 μ€‘λ‹¨ν•˜κ²Œ λœλ‹€. ν•΄λ‹Ή μž‘μ—…μ΄ μ™„λ£Œ 되면 νŒŒμ‹±μ„ λ‹€μ‹œ μ‹œμž‘ν•œλ‹€.

단점
html νŒŒμ‹±μ΄ μ™„λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ ν•˜λŠ” 것이기 λ•Œλ¬Έμ— λ¬Έμ œκ°€ 생길
μš”μ§€κ°€ μžˆλ‹€.

λ˜ν•œ λ‹€μš΄λ‘œλ“œ 순으둜 μžλ°”μŠ€ν¬λ¦½νŠΈ 파일이 μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— 파일 κ°„ μ‹€ν–‰ μˆœμ„œκ°€ μ€‘μš” ν•  경우 ν•΄λ‹Ή 
뢀뢄도 λ¬Έμ œκ°€ 될 수 μžˆλ‹€.

4. head + defer μ˜΅μ…˜
<head>
  <script defer src"a.js"></script>
  <script defer src"b.js"></script>
  <script defer src"c.js"></script>
</head>

μœ„μ™€ 같은 μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ²Œ 되면 슀크립트 νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œλ₯Ό μ™„λ£Œν•˜λŠ” μ‹œμ μ΄ 파일 κ°„ μ„œλ‘œ λ‹€λ₯Ό 수 있 
μ§€λ§Œ νƒœκ·Έλ₯Ό λ§Œλ‚˜λŠ” μ‹œμ λΆ€ν„° νŒŒμΌμ„ 미리 λ‹€μš΄λ‘œλ“œ ν•œλ‹€λŠ” μž₯점이 있고 html νŒŒμΌμ„ λͺ¨λ‘ λ‹€μš΄λ‘œλ“œ ν•œ μ‹œμ  이
파일 μž‘μ„± 순으둜 μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ μ‹€ν–‰μ‹œν‚€κΈ° λ•Œλ¬Έμ— μœ„μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 였λ₯˜ 2κ°€λ₯Ό 방지 ν•  수 μžˆλ‹€.

html νŒŒμΌμ„ λͺ¨λ‘ μ™„λ£Œν•œ μƒνƒœμ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λ°›μœΌλ―€λ‘œ html νŒŒμΌμ„ λͺ¨λ‘ 받지 μ•Šμ€ μƒνƒœμ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ
νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ ν–ˆμ„ λ•Œ λ°œμƒν•  수 μžˆλŠ” μ—λŸ¬μš”μ†Œλ₯Ό 방지할 수 μžˆλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ μž‘μ„±ν•œ μˆœμ„œλŒ€λ‘œ νŒŒμΌμ„ μ‹€ν–‰μ‹œμΌœ λ¬΄μž‘μœ„ μˆœμ„œλ‘œ 파일이 μ‹€ν–‰λ˜λŠ” 것을 방지할 수 μžˆλ‹€.

좜처
Dream Coding

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보