JavaScript

script ์š”์†Œ์˜ defer๊ณผ async ์†์„ฑ์„ ํ†ตํ•œ ํšจ๊ณผ์ ์ธ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ

martinooo 2024. 3. 19. 13:34

 

๐Ÿคท‍โ™‚๏ธ ๋ณธ๋ก ์— ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ


์›น ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด <script> ์š”์†Œ๋ฅผ ์ด์šฉํ•ด์„œ HTML ๋ฌธ์„œ ์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ•„์—ฐ์ ์œผ๋กœ ์ƒ๊ธฐ๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ <script> ์š”์†Œ๋ฅผ ์ข€ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

๐Ÿคท‍โ™‚๏ธ script ์š”์†Œ์˜ ์œ„์น˜


๋ธŒ๋ผ์šฐ์ €๊ฐ€ javascript <script> ์š”์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณด์‹  ์ ์ด ์žˆ๋‚˜์š”? ๋‹ค๋“ค ์•„์‹œ๊ฒ ์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ๋ฌธ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋‹ค๊ฐ€ <script> ์š”์†Œ๋ฅผ ๋งŒ๋‚˜๋ฉด src ์†์„ฑ์— ๋ช…์‹œ๋œ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์ด๋‚˜ script ๋‚ด๋ถ€์— ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์•„์„œ javascript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

* ์—ฌ๊ธฐ์„œ <script> ์š”์†Œ๊ฐ€ HTML ๋ฌธ์„œ์—์„œ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€๊ฐ€ ์›น ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์†๋„์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. 

HTML์€ ๋™๊ธฐ์‹์œผ๋กœ ํ•œ์ค„ํ• ์ค„์”ฉ ์ฝ์–ด๋‚˜๊ฐ€๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

EX: ์•„๋ž˜์™€ ๊ฐ™์€ <script> ์š”์†Œ๊ฐ€ <body> ์š”์†Œ์˜ ์ค‘๊ฐ„์— ์˜ค๊ฒŒ ๋˜๋ฉด ์–ด๋–ค ์‹์œผ๋กœ ์ฝ์–ด๋‚˜๊ฐˆ๊นŒ?

<body>
    <h2>A</h2>
    <script src="./script.js"></script>
    <h2>B</h2>
</body>

 

์œ„ HTML ๋ฌธ์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

  • <h2>A</h2>๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ๋จ
  • script.js ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›์•„ ์ž๋ฐ”์Šค๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ
  • <h2> B </h2>๊ฐ€ ํ™”๋ฉด์— ์ถœ๋ ฅ

* HTML์€ ๋™๊ธฐ์‹์œผ๋กœ ํ•œ์ค„ํ•œ์ค„ ์ฝ์–ด๋‚˜๊ฐ€๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

 

๐Ÿคท‍โ™‚๏ธ defer vs async ์†์„ฑ?


์ „ํ†ต์ ์œผ๋กœ script ์š”์†Œ๋ฅผ head ์š”์†Œ ์•ˆ์— ๋„ฃ๋„๋ก ๋ฐฐ์šฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ or UI & UX ์ธก๋ฉด์—์„œ body ์š”์†Œ ์ œ์ผ ๋งˆ์ง€๋ง‰์— script๋ฅผ ๋„ฃ์–ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ตœ์ ํ™”๋œ ์›นํŽ˜์ด์ง€ ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

๋ฏธ๋ฆฌ HTML ๊ทธ๋ ค์ฃผ๊ณ  script๋ฅผ ๋ Œ๋” ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

Defer ์†์„ฑ ์ •์˜

<script> ์š”์†Œ์— defer ์†์„ฑ์˜ ์ •์˜

<script defer src=”./”>

defer ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด HTML์ฝ”๋“œ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋ฉด์„œ ๋™์‹œ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋„ ๋‚ด๋ ค๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* script ํŒŒ์ผ์ด ํด ๊ฒฝ์šฐ defer ์†์„ฑ์— ํšจ์œจ์ ์ด๋‹ค.

 

Async ์†์„ฑ ์ •์˜

<script async src=”./”> defer ๋น„์Šทํ•˜๊ฒŒ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿคท‍โ™‚๏ธ defer vs async ๊ฒฐ๋ก 


๊ทธ๋Ÿผ ๊ฒฐ๋ก ์ ์œผ๋กœ ์–ด๋–ค ์ƒํ™ฉ์—์„œ defer ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹๊ณ , ์–ธ์ œ async ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋‚˜์„๊นŒ? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋‹ค์šด๋กœ๋“œ ์ธก๋ฉด์—์„œ๋Š” defer ์†์„ฑ๊ณผ async ์†์„ฑ์€ ํฐ ์ฐจ์ด๋Š” ์—†๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์—์„œ ๋ชจ๋‘ ๋ธŒ๋ผ์šฐ์ €๋Š” HTML ์š”์†Œ๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋ฉด์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ธก๋ฉด์—์„œ ์žˆ์„ ๋•Œ๋Š” defer ์†์„ฑ๊ณผ async ์†์„ฑ ๊ฐ„์—๋Š” ์˜๋ฏธ์žˆ๋Š” ์ฐจ์ด๊ฐ€ ์ƒ๊ธด๋‹ค. ์„œ๋กœ ์—ฐ๊ด€์ด ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” defer ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ์•ˆ์ „ํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด defer ์†์„ฑ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ HTML ๋ฌธ์„œ์— ๋‚˜ํƒ€๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 


URL์ธ์ฝ”๋”ฉ & ๋””์ฝ”๋”ฉ ํ•ด๋ณด๊ธฐ