๐ฅ Script ํ๊ทธ
DOM์ด ์์ฑ๋ ๋, Script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ๋ฉ์ถ๊ณ Script๋ฅผ ์คํํ๋ค.
src ์์ฑ์ ํฌํจํ ์ธ๋ถ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ฌ์ ๋์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด ๋ฐ๊ณ ์คํํ ๋ ๊น์ง Script ํ๊ทธ ์๋์ ์ ์ธ๋ DOM ์์๋ค์ ๋๊ธฐํด์ผ ํ๋ค.
์ฌ๊ธฐ์ DOM ์์ฑ์ ์ค๋จํ์ง ์๊ณ , ์คํฌ๋ฆฝํธ๋ฅผ ๋์์ ๋ด๋ ค๋ฐ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก
defer, async๊ฐ ์๋ค.
๐ฅ defer
defer ์์ฑ์ ์คํฌ๋ฆฝํธ๋ฅผ '๋ฐฑ๊ทธ๋ผ์ด๋'์์ ๋ค์ด๋ก๋ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก HTML ํ์ฑ(DOM ์์ฑ)์ ์ค๋จ์ํค์ง ์์ผ๋ฉฐ defer ์์ฑ์ด ์๋ ์คํฌ๋ฆฝํธ์ ๋ค์ด๋ก๋๊ฐ ๋๋๋๋ผ๋
DOM ์์ฑ์ ๋ง์น ๋ ๊น์ง ์ง์ฐ๋ ํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ค.
->DOM์ด ๋ชจ๋ ready๋ ๋ค์์ ์คํ๋๋ค.
์ ์ํ ์ ์ผ๋ก๋ DOM ์ค๋น ์ดํ ๋ฐ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉฐ, ์ด ์์ ์ DOMContentLoaded ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ด๋ค.
๊ทธ๋ฆฌ๊ณ defer ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ ์คํฌ๋ฆฝํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก,
์์๋ฅผ ์งํค๋ฉฐ ์คํ๋๋ฏ๋ก ์์ script๊ฐ ๋ฌด๊ฒ๊ณ ๋ค์ ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ๋ณ๋ค๊ณ ํด๋ ์์๋๋ก ์คํ๋๋ค.
๐ฅ async
async ์์ฑ์ ํ์ด์ง ์์
๊ณผ ์์ ํ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค.
-> Async๋ ์๋ฌด ๊ฒ๋ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ์๋ฌด ๊ฒ๋ Async๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค. (= ๋ก๋ ๋ฐ ์คํ์ด ์์ ํ ๋
๋ฆฝ์ ์ด๋ค)
defer์ ๋ง์ฐฌ๊ฐ์ง๋ก, async ์์ฑ์ ํตํ๋ฉด ์คํฌ๋ฆฝํธ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค์ด๋ก๋๋๋ค.
๊ทธ๋ฌ๋ ์คํฌ๋ฆฝํธ๋ ๋ค์ด๋ก๋ ์ฆ์ ์คํ๋๋ฉฐ, ์คํฌ๋ฆฝํธ ์คํ ๋์ค์๋ DOM ์์ฑ์ ์ค๋จํ๋ค.
๋ค์ด๋ก๋ ์ฆ์ ์คํ๋๊ธฐ ๋๋ฌธ์, DOMContentLoaded ์ด๋ฒคํธ ์ด์ ์ ์คํ์ ๋ณด์ฅํ์ง ์๋๋ค.
์ฌ์ง์ด๋ DOMContentLoaded ์ดํ์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ์๋ ์๋ค.
๋ง์ง๋ง์ผ๋ก async๋ '๋ค์ด๋ก๋ ์๋ฃ ์์'์ ์์กดํ๋ฏ๋ก,
defer๊ฐ ์ ์ธ๋ ์์๋ฅผ ์งํค๋ฉฐ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ํ๋ ๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ, async๋ ์ ์ธ๋ ์์์ ์คํ ์์๊ฐ ๋ฌด๊ดํ๋ค.
์ด๋ฅผ 'load first order' ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
async ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋๊ธฐ ์คํฌ๋ฆฝํธ๋ผ๊ณ ํ๋๋ฐ, ์ด๋ ๊ฐ๊ฐ ์คํฌ๋ฆฝํธ๊ฐ ๋
๋ฆฝ์ ์ธ ์ญํ ์ ํ๋ ๊ด๊ณ ๋ฑ์ ์๋ํํฐ ์คํฌ๋ฆฝํธ ๋ฑ์
ํ์ฌ ๊ฐ๋ฐ์ค์ธ ์คํฌ๋ฆฝํธ์ ํตํฉํ ๋ ์ ์ฉํ๋ค๊ณ ํ๋ค.
async ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์ ์์กดํ์ง ์๋ ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
async, defer ์คํฌ๋ฆฝํธ๋ ๋ค์ด๋ก๋ ์ ํ์ด์ง ๋ ๋๋ง(DOM ์์ฑ)์ ๋ง์ง ์๋๋ค.
๊ทธ๋์ ์ ์ ํ async, defer ์ฌ์ฉ์ ์ฌ์ฉ์์ UX๋ฅผ ํฅ์์ํฌ ์ ์๋ค.
defer ์์ฑ์ ๋ณดํต DOM ์ ์ฒด๊ฐ ํ์ํ ์คํฌ๋ฆฝํธ๋ ์คํ ์์๊ฐ ์ค์ํ ๋(B ์คํฌ๋ฆฝํธ๋ A ์คํฌ๋ฆฝํธ ์ดํ์ ์คํ๋์ด์ผ ํ ๋) ์ ์ฉํ๋ค.
async ์์ฑ์ ๋ฐฉ๋ฌธ์ ์ ์นด์ดํฐ ํน์ ๊ด๊ณ ์คํฌ๋ฆฝํธ ๋ฑ๊ณผ ๊ฐ์ด ๋
๋ฆฝ์ ์ผ๋ก ์๋ํ๋ ์คํฌ๋ฆฝํธ์ ์ ์ฉํ๋ค.
์ด์ ๊ฐ์ด DOM ํ์ฑ์ ๋ง์ง ์๋ ์ต์
์ ์ฌ์ฉํ ๋๋, ํ์ด์ง๊ฐ ์ถ๋ ฅ ๋์์ผ๋, ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ง ์์ ์์ ์ ์กฐ์ฌํด์ผ ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก, ๋ก๋ฉ ์คํผ๋๋ฅผ ์ฌ์ฉํ๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ฒํผ๋ฑ์ ๋นํ์ฑํ ์ํค๋ ๋ฑ์ ์ถ๊ฐ ์กฐ์น๋ฅผ ํตํด
์ฌ์ฉ์์๊ฒ ์์ง ํ์ด์ง๊ฐ ์์ ํ ๋ถ๋ฌ์์ง์ง ์์๋ค๋ ๊ฒ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค ์ ์์ด์ผ ํ๋ค.
'Elice > Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] event.target๊ณผ event.currentTarget์ ์ฐจ์ด์ (0) | 2024.03.28 |
---|---|
[JavaScript] ๋ฒ๋ธ๋ง๊ณผ ์บก์ฒ๋ง (0) | 2024.03.21 |
[JavaScript] ์ฌ๊ท(Recursive)์ ์คํ(Call Stack)+๋ฐ๋ณต๋ฌธ๊ณผ ์ฑ๋ฅ ๋น๊ต (0) | 2024.03.21 |
[JavaScript] DOM (0) | 2024.03.21 |
[JavaScript] this (์ ์ , ๋์ ๋ฐ์ธ๋ฉ) (0) | 2024.03.21 |