async VS defer

ํ•œ์„œํฌยท2021๋…„ 12์›” 2์ผ

script๋ฅผ head ์•ˆ์— ํฌํ•จ

<!DOCTYPE html>
<html lang="en">
  <head>
  	<title>Document</title>
    <script src="main.js"></script>
  </head>
  <body></body>
</html>

๐Ÿ‘‰๐Ÿป jsํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณผ ๋•Œ๊นŒ์ง€ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ


body์•ˆ ๋ ๋ถ€๋ถ„์— script ์ถ”๊ฐ€

<!DOCTYPE html>
<html lang="en">
  <head>
  	<title>Document</title>
  </head>
  <body>
    <div></div>
  	<script src="main.js"></script>
  </body>
</html>

๐Ÿ‘‰๐Ÿป ํŽ˜์ด์ง€๊ฐ€ ์ค€๋น„ ๋œ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋’ค ์‹คํ–‰
๐Ÿ‘‰๐Ÿป ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋ณธ์ ์ธ html์˜ ์ปจํ…์ธ ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ›์•„์™€ ์‹คํ–‰ํ•˜๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆผ


head ์•ˆ์— script + async

<!DOCTYPE html>
<html lang="en">
  <head>
  	<title>Document</title>
    <script async src="main.js"></script>
  </head>
  <body>
    <div></div>
  </body>
</html>

๐Ÿ‘‰๐Ÿป ๋ณ‘๋ ฌ๋กœ jsํŒŒ์ผ์„ ๋‹ค์šด
๐Ÿ‘‰๐Ÿป body์•ˆ ๋๋ถ€๋ถ„์— script๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ๋‹ค์šด๋ฐ›๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๐Ÿ‘‰๐Ÿป html์ด parsing๋˜๊ธฐ ์ „์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— html์˜ ์›ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์•„์ง ์ •์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
๐Ÿ‘‰๐Ÿป ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด html parsing์„ ์–ธ์ œ๋“ ์ง€ ๋ฉˆ์ถœ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

โœจ async๋ฅผ ์ด์šฉํ•ด ๋‹ค์ˆ˜์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋ฐ›๊ฒŒ ๋˜๋ฉด ๋จผ์ € ๋‹ค์šด๋กœ๋“œ ๋˜๋Š”๊ฒƒ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ •์˜๋œ ์Šคํฌ๋ฆฝํŠธ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋‹ค์šด๋กœ๋“œ ๋œ ์ˆœ์„œ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ž‘์„ฑํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆœ์„œ์˜ ์˜์กด์ ์ด๋ผ๋ฉด ๋น„์ถ”!


head ์•ˆ์— script+ defer

๐ŸŒŸ recommend it!

<!DOCTYPE html>
<html lang="en">
  <head>
  	<title>Document</title>
    <script defer src="main.js"></script>
  </head>
  <body>
    <div></div>
  </body>
</html>

๐Ÿ‘‰๐Ÿป jsํŒŒ์ผ์„ ๋‹ค์šด ๋ฐ›์ž ๋ช…๋ น๋งŒ ์‹œ์ผœ ๋†“๊ณ  html parsing์„ ๋๊นŒ์ง€ ํ•œ๋‹ค.
๐Ÿ‘‰๐Ÿป html์„ parsingํ•˜๋Š” ๋™์•ˆ ํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค€ ๋’ค ๋ฐ”๋กœ ์ด์–ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰.

โœจ defer์„ ์ด์šฉํ•ด ๋‹ค์ˆ˜์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋ฐ›๊ฒŒ ๋˜๋ฉด html์„ parsingํ•˜๋Š”๋™์•ˆ ํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ๋†“์€ ๋‹ค์Œ์— ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ!


๐Ÿ™Œ๐Ÿป 'use strict'
์ˆœ์ˆ˜ ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ 'use strict'๋ฅผ ๋งจ ์œ„์— ์„ ์–ธํ•˜๋ฉด ์กฐ๊ธˆ ๋” ์ƒ์‹์ ์ธ ๋ฒ”์œ„ ์•ˆ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

profile
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ํ•œ์„œํฌ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€