์ฐ๋ฆฌ๊ฐ HTML
์ ์ ํ๊ณ , JS
์ CSS
๋ฅผ ๋ค๋ฃฐ ๋, ํํ๋ค ๊ฒฝํํ๋ ์ค์๊ฐ ์๋ค. ๋ฐ๋ก ํ์ผ ๋ฐฐ์น๋ก ์ธํด ์ํ๋ ์ ์ฉ์ด ์ด๋ฃจ์ด์ง์ง ์๋ ๊ฒ์ด๋ค!
์ ์ฐ๋ฆฌ์ HTML
์ ๋๋์ฒด, ๋ถ๋ช
script
์ link
ํ๊ทธ๋ฅผ ์๋ฆ๋ต๊ฒ ๊ฑธ์ด๋จ๋๋ฐ, ์ ๋๋ก ์๋ํ์ง ์์๋ ๊ฒ์ธ๊ฐ!
๋์ถฉ ์๊ณ ์์์ง๋ง, ์ข ๋ ์ ํํ ์ดํดํ๊ณ ๊ธฐ๋ณธ์ ์ตํ๊ธฐ ์ํด ์ด ์ฃผ์ ๋ฅผ ๋ค๋ฃจ๊ฒ ๋๋ค.
HTML
์ด ์ด ๊ธ์ ๋ณธ๋ค๋ฉด ์๋ง ์ด๋ ๊ฒ ์ค์ผ๊ฑฐ๋ฆด ๊ฒ์ด๋ค.
์๋... ์ ๋๋ก ๋์ํ๊ณ ์์๋๋ฐ์... (๊ธ์ ๊ธ์ )
์ฐ๋ฆฌ๋ HTML
๋ฅผ ์์นญ์ ํ๊ธฐ ์์ํ๋ฉด ๋ถ๋ช
HTML์ ๋ ๋๋ง ๊ณผ์ ์ ์จ๊ฒจ์ง ๋น๋ฐ์ ์๊ฒ ๋๋๋ฐ, ๊ทธ๊ฒ์ ๋ฐ๋ก,
HTML
์synchronous
ํ๊ฒcss
์js
ํ์ผ์ ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค!
์ฌ๊ธฐ์ ์ด์ script async
๊ณผ script defer
์ ์ฐจ์ด์ ์ด ๋๋ฌ๋๊ฒ ๋๋ค.
๊ฐ๋ น ๋ค์๊ณผ ๊ฐ์ด HTML์ ํ์ฑํ๋ ๊ณผ์ ์ ์ ์ผ๋ก ๊ทธ๋ ค๋ณธ๋ค๊ณ ํ๋ค.
์ด๋ ์คํฌ๋ฆฝํธ์ ์์น๋ ๊ฐ์ด๋ฐ๋ค.
์ด๋ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋๋ฉด, HTML์ ํ์ฑ์ ์ค๋จํ๊ณ , ์๋๋ฌ script๋ฅผ ๊ฐ์ ธ์์, ์คํํ๋ค. ์ดํ ์ฌ๊ฐํ๋ ๋ฐฉ์์ด๋ค.
๋ณธ ์์๋ ๋งค์ฐ ๋จํธ์ ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ script ํ์ผ์ด ๋ฌด์ํ ๋ง๋ค๊ณ ์๊ฐํด๋ณด์. ๊ณผ์ฐ ์ฌ์ฉ์๋ ๊ทธ ๋๊ธฐ์๊ฐ์ ๊ด์ฉํ ๊น?
๊ฒฐ๊ตญ ์ด๋ฌํ ๋๊ธฐ์๊ฐ์ ์ค์ด๋ฉด์, ๊ธฐ์กด์ HTML ํ์ฑ ๋ฐ script fetch๋ ์ํํ ์ํํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค. ๊ทธ ๊ณผ์ ์์ ํ์ํ ๊ฒ์ด script async
๊ณผ script defer
์ด๋ค.
async
์ด๋ผ๋ ๋ง ๋ต๊ฒ ๋น๋๊ธฐ์ ์ผ๋ก script๋ฅผ fetchํ๊ณ , ์๋ฃํ๋ฉด ๊ทธ๋ HTML ํ์ฑ์ ์ค๋จ์ํค๊ณ ์คํ์ ์ง์คํ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ฑ ์๊ฐ์ ๋จ์ถ์์ผ (script fetch์ ๋ณํํ๊ธฐ ๋๋ฌธ) ์๊ฐ์ ์๋น๊ธธ ์ ์๋ ๊ฒ์ด๋ค.
์ผ๋ง๋ ์ด์์ ์ธ๊ฐ! ํ์ง๋ง ์๋ฒฝํ ์ด์์ ์๋ค.
๊ฐ๋ น ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
์ฌ๊ธฐ์ script1์ด ๋ฌด์กฐ๊ฑด script2๋ณด๋ค ์ฐ์ ์คํ๋์ด์ผ ํ๋ค๋ ๊ฐ์ ์ ๊น๊ฒ ๋ค.
script2
๊ฐ ๋ ์์์ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ค๊ฒ ๋๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋จผ์ ์คํ๋์ด๋ฒ๋ฆฌ๋ ํ์์ด ๋ฐ์ํ๋ค! ํํธ, ์ฐ๋ฆฌ๋ ๊ฒฐ๊ตญ JS
์์ ๋ฌธ์ ๊ฐ ์๋ ์ดํด ๋ณด๋ฉฐ ์ฝ์ง์ ํ ๊ฒ์ด๋ค!
๊ทธ๋ ๊ธฐ์, script fetch์ async์ ์ ์ฉํ ๊ฑฐ๋ผ๋ฉด, ๋ ๋ฆฝ์ ์ด์ด์ผ ํ๋ค.
๋ง ๊ทธ๋๋ก ์ฐ๊ธฐํ๋ค๋ ๊ฑฐ๋ค!
์์ง๊น์ง๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค. ์๋๋ฅผ ์ค์ด๋ฉด์ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ ๋ฐฉ๋ฒ ์ค์์ ๊ฐ์ฅ ๋์ ๋ฐฉ๋ฒ์ธ ๋ฏ ์ถ๋ค. (ํน์ฌ๋ ํ๊ณ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก ๋ง์ํด์ฃผ์๋ฉด ๊ฐ์ฌํฉ๋๋ค.)
์, script async / defer
์ src ์์ฑ์ด ํ์์ด๋ฉฐ, ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋ ์ง์๋์ง ์๋๋ค๊ณ ํ๋(๋งค์ฐ ์ ์ง๋ง), ์ฐธ๊ณ ํ์.
์ฐธ๊ณ 1 - Five minutes to understand async and defer
์ฐธ๊ณ 2 - script์ async์ defer ์์ฑ(๋ธ๋ก๊ทธ)