๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์
- ํด๋ผ์ด์ธํธ ์ฌ์ด๋์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์์์ ๋์ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ HTML, CSS, javascript ๋ก ์์ฑ๋ ํ ์คํธ ๋ฌธ์๋ฅผ ์ด๋ป๊ฒ ํ์ฑํ์ฌ ๋ ๋๋งํ๋์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
ํ์ฑ(parsing)
- ํ์ฑ(๊ตฌ๋ฌธ ๋ถ์
syntax analysis
)์ ํ ์คํธ ๋ฌธ์๋ฅผ ์ฝ์ด๋ค์ฌ ์คํํ๊ธฐ ์ํด ํ ์คํธ ๋ฌธ์์ ๋ฌธ์์ด์ ํ ํฐ(token
)์ผ๋ก ๋ถํด(์ดํ ๋ถ์lexical analysis
)ํ๊ณ ํ ํฐ์ ๋ฌธ๋ฒ์ ์๋ฌด์ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ํ์ฌ ํ์ค ํธ๋ฆฌ(parse tree
)๋ฅผ ์์ฑํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋งํฉ๋๋ค. - ํ์ฑ์ด ์๋ฃ๋ ์ดํ์๋ ํ์คํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ฐ์ธ์ด์ธ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค.
๋ ๋๋ง(rendering)
- ๋ ๋๋ง HTML, CSS ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ์ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ์ ๋งํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์
- ๋ธ๋ผ์ฐ์ ๋ HTML, CSS, JS ๋ฑ ๋ ๋๋ง์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ ์๋ฒ๋ก ๋ถํฐ ์๋ต์ ๋ฐ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง์์ง์ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ HTML๊ณผ CSS๋ฅผ ํ์ฑํ์ฌ
DOM
๊ณผCSSOM
์ ์์ฑํ๊ณ ์ด๋ฅผ ๊ฒฐํฉํ์ฌ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑ - ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฒ๋ก ๋ถํฐ ์๋ต๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํ์ฌ AST(
Abstract Syntax Tree
)๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ์ฌ ์คํ(์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๋DOM API
๋ฅผ ํตํดDOM
์ด๋CSSOM
์ ๋ณ๊ฐ๋ฅ) - ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTML ์์์ ๋ ์ด์์์ ๊ณ์ฐํ๊ณ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ HTML์์๋ฅผ ํ์ธํ ํ๋ค.
์์ฒญ๊ณผ ์๋ต
- ๋ธ๋ผ์ฐ์ ์ ํต์ฌ ๊ธฐ๋ฅ์ ํ์ํ ๋ฆฌ์์ค(HTML, CSS, JS ๋ฑ๋ฑ..)๋ฅผ ์์ฒญ(
request
)ํ๊ณ ์๋ต(response
)๋ฐ์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ๊ฒ์ด๋ค. - ๋ ๋๋ง์ ํ์ํ ๋ฆฌ์์ค๋ ๋ชจ๋ ์๋ฒ์ ์กด์ฌํ๋ฏ๋ก ํ์ํ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์ ์์ฒญํ๊ณ ์๋ต ๋ฐ์ ๋ฆฌ์์ค๋ฅผ ํ์ฑํ์ฌ ๋ ๋๋ง ํ๋ ๊ฒ
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ ์์ฒญ์ ์ ์กํ๊ธฐ ์ํด ์ฃผ์์ฐฝ์ ์ ๊ณตํ๋ค.
- ์ฃผ์์ฐฝ์
URL
์ ์ ๋ ฅํ์ฌ ์ ์ก ํ๋ฉดURL
์ ํธ์คํธ ์ด๋ฆ์ดDNS
๋ฅผ ํตํดIP
์ฃผ์๋ก ๋ณํ๋๊ณ ์ดIP
์ฃผ์๋ฅผ ๊ฐ๋ ์๋ฒ์๊ฒ ์์ฒญ์ ์ ์กํ๋ค. - ๋ฃจํธ ์์ฒญ์ ์๋ฌต์ ์ผ๋ก
index.html
์ ์๋ต - index.html์ด ์๋ ๋ค๋ฅธ ์ ์ ํ์ผ์ ์์ฒญํ ๊ฒฝ์ฐ ํด๋น ์ ์ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ
Path
์ ๊ธฐ์ ํ์ฌ ์๋ฒ์ ์์ฒญ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ์ ์๋๋ฐ ์ด๋ฅผ 'ajax'๋ผ๊ณ ํฉ๋๋ค.
- ์๋ฒ์ index.html ์์ฒญ์ CSS, JS, ์ด๋ฏธ์ง, ํฐํธ ๋ฑ ์ธ๋ถ ๋ฆฌ์์ค๋ ๊ฐ์ด ์๋ต ๋ฉ๋๋ค.
์ด๋ ๋ธ๋ผ์ฐ์ ์์ง์ด HTML์ ํ์ฑํ๋ ๋์ค img, link, script ๋ฑ์ ํ๊ทธ๋ฅผ ๋ง๋๋ฉด HTMLํ์ฑ์ ์ ์ ์ค๋จํ๊ณ ์ธ๋ถ ๋ฆฌ์์ค ํ์ผ์ ์์ฒญํ๊ธฐ ๋๋ฌธ
HTTP 1.1 ๊ณผ HTTP 2.0
- HTTP(
HyperText Transfer Protocol
)๋ ์น์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๊ฐ ํต๊ธฐํ๊ธฐ ์ํ ํ๋กํ ์ฝ ์ ๋๋ค. - HTTP/1.1์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปค๋ฅ์ ๋น ํ๋์ ์์ฒญ๊ณผ ์๋ต๋ง ์ฒ๋ฆฌํฉ๋๋ค.
- HTTP/2.0์ ์ปค๋ฅ์ ๋น ์ฌ๋ฌ๊ฐ์ ์์ฒญ๊ณผ ์๋ต, ์ฆ ๋ค์ค ์์ฒญ/์๋ต์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ฌ๋ฌ ๋ฆฌ์์ค์ ๋์ ์ ์ก์ด ๊ฐ๋ฅํ๋ฏ๋ก HTTP/1.1์ ๋นํด ๋ก๋ ์๋๊ฐ ๋ ๋น ๋ฆ ๋๋ค.
HTML ํ์ฑ๊ณผ DOM ์์ฑ
- HTML ๋ฌธ์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์์ํ ํ ์คํธ์ ๋๋ค.
- HTML ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์๊ฐ์ ์ธ ํฝ์ ๋ก ๋ ๋๋ง ํ๋ ค๋ฉด, ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์๋ฃ ๊ตฌ์กฐ(๊ฐ์ฒด)๋ก ๋ณํํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
- ์ฆ, ๋ธ๋ผ์ฐ์ ์์ง์ HTML๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ธ DOM(
Document Object Model
)์ ์์ฑํฉ๋๋ค.
DOM ์์ฑ ๊ณผ์
- ์๋ฒ์ ์กด์ฌํ๋
HTML
ํ์ผ์ด ๋ธ๋ผ์ฐ์ ์์ฒญ์ ์ํด ์๋ต ๋๋ค. - ์๋ฒ๋ ์์ฒญ๋
HTML
ํ์ผ์ ์ฝ์ด๋ค์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํธ(2์ง์)๋ฅผ ๊ฒฝ์ ํ์ฌ ์๋ต - ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๊ฐ ์๋ตํ
HTML
๋ฌธ์๋ฅผ ๋ฐ์ดํธ(2์ง์)ํํ๋ก ์๋ต๋ฐ์ - ์๋ต๋
HTML
๋ฌธ์๋meta
ํ๊ทธ์charset
์ดํฐ๋ฆฌ๋ทฐํธ์ ์ํด ์ง์ ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด๋ณํ
(์ด๋meta
ํ๊ทธ์ ์ดํธ๋ฆฌ๋ทฐํธ๋ ์๋ต ํค๋(response header
)์ ๋ด๊ฒจ ์๋ต๋ฉ๋๋ค.) - ๋ฌธ์์ด๋ก ๋ณํ๋
HTML
๋ฌธ์๋ฅผ ์ฝ์ด ๋ค์ฌ ๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ฝ๋์ ์ต์ ๋จ์์ธ ํ ํฐ(token
)๋ค๋ก ๋ถํด - ๊ฐ ํ ํฐ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ๋
ธ๋(
node
)๋ฅผ ์์ฑ (ํ ํฐ์ ๋ด์ฉ์ ๋ฐ๋ผ ๋ฌธ์ ๋ ธ๋, ์์ ๋ ธ๋ ๋ฑ์ผ๋ก ๋ถ๋ฅ) HTML
๋ฌธ์๋HTML
์์๋ค์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ HTML ์์๋ ์ค์ฒฉ๊ด๊ณ๋ฅผ ๊ฐ๋๋ค. ์ฆ, ์ค์ฒฉ ๊ด๊ณ์ ์ํด ํ์ฑ๋ ๋ ธ๋๋ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ, ๋ ธ๋๋ค๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผDOM์ด๋ผ๊ณ
ํ๋ค.
CSS ํ์ฑ๊ณผ CSSOM ์์ฑ
- ๋ ๋๋ง ์์ง์
DOM
์ ์์ฑํ๋ค CSS๋ฅผ ๋ก๋ํ๋link
ํ๊ทธ๋style
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํฉ๋๋ค. CSS
ํ์ผ์ด๋style
ํ๊ทธ ๋ด์CSS
๋ฅผHTML
๊ณผ ๋์ผํ ๊ณผ์ ์ผ๋ก ํ์ฑํ์ฌ CSSOM(CSS Object Model
) ์์ฑCSSOM
์ด ์์ฑ ์๋ฃ๋๋ฉด ์ผ์ ์ค๋จ๋ DOM ํธ๋ฆฌ ์์ฑ์ ์ฌ๊ฐCSSOM
์ ์์๊ด๊ณ๋ฅผ ๋ฐ์
๋ ๋ ํธ๋ฆฌ ์์ฑ
DOM
๊ณผCSSOM
์ ๋ ๋๋ง์ ์ํด ๋ ๋ ํธ๋ฆฌ(render tree
)๋ก ๊ฒฐํฉ๋จ- ๋ ๋ ํธ๋ฆฌ๋ ๋ ๋๋ง์ ์ํ ์๋ฃ ๊ตฌ์กฐ๋ก ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํ์ ๋์ง ์๋ ๋ ธ๋(meta ํ๊ทธ ํน์ display : none ๋ฑ..)๋ ํฌํจ๋์ง ์๋๋ค.
- ์์ฑ๋ ๋ ๋ ํธ๋ฆฌ๋ ๊ฐ HTML์์์ ๋ ์ด์์์ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํฝ์ ์ ๋ ๋๋งํ๋ ํ์ธํ ์ฒ๋ฆฌ์ ์ ๋ ฅ๋๋ค.
- ์ ๋ฆฌ : ๋ ๋ํธ๋ฆฌ ์์ฑ -> ๋ ์ด ์์ ๊ณ์ฐ -> ํ์ธํ ๊ณผ์
- ์ ๋ ๋๋ง ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฐ๋ณต์ ์ผ๋ก ์คํ ๋ ์ ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํ ๋ ธ๋ ์ถ๊ฐ ๋๋ ์ญ์
- ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ฆฌ์ฌ์ด์ง์ ์ํ ๋ทฐํฌํธ ํฌ๊ธฐ ๋ณ๊ฒฝ
- HTML ์์์ ๋ ์ด์์ ๋ณ๊ฒฝ(
width
,margin
,padding
,display
,position
๋ฑ์ ์คํ์ผ ๋ณ๊ฒฝ)
๋ฆฌ๋ ๋๋ง์ ์ฑ๋ฅ์ ์ ์ํฅ์ ์ฃผ๋ ์์ ์ด๋ฏ๋ก ์ฃผ์ํ ํ์๊ฐ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ
DOM
์HTML
๋ฌธ์์ ๊ตฌ์กฐ์ ์ ๋ณด ๋ฟ๋ง ์๋๋ผHTML
์์์ ์คํ์ผ ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๋ DOM API๋ฅผ ์ ๊ณต- CSS ํ์ฑ๊ณผ์ ๊ณผ ๋์ผํ๊ฒ DOM ์์ฑ๊ณผ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋ํ๋
script
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ค์ง script
ํ๊ทธ์ ์์ฒญ๋ ์๋ฐ์คํฌ๋งํธ ์ฝ๋๋ฅผ ํ์ฑํ๊ธฐ์ํด ์ ์ด๊ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋๊น, ์ดํ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ์ด ์ข ๋ฃ๋๋ฉด ๋ ๋๋ง ์์ง์ผ๋ก ๋ค์ ์ ์ด๊ถ์ ๋๊น- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์
DOM
์ด๋CSSSOM
์ ์์ฑํ๋ฏ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ์ฌ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST,Abstract Syntax Tree
)๋ฅผ ์์ฑ - AST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑ
ํ ํฌ๋์ด์ง(tokenizing)
- ๋จ์ ๋ฌธ์์ด์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค์ฝ๋๋ฅผ ์ดํ ๋ถ์(
lexical analysis
)ํ์ฌ ๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ฝ๋์ ์ต์ ๋จ์์ธ ํ ํฐ๋ค๋ก ๋ถํด, ์ด ๊ณผ์ ์ ๋ ์ฑ(lexing
)์ด๋ผ๊ณ ํจ
ํ์ฑ(parsing)
- ํ ํฐ๋ค์ ์งํฉ์ ๊ตฌ๋ถ ๋ถ์ํ์ฌ
AST
๋ฅผ ์์ฑ (AST
๋ ํ ํฐ์ ๋ฌธ๋ฒ์ ์๋ฏธ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ) AST
๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐํ๋ฆฌํฐ๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ตฌํTypeScript
,Babel
,Prettier
๊ฐ์ ํธ๋์ค ํ์ผ๋ฌ ๋ํ ๊ตฌํ ๊ฐ๋ฅ
๋ฐ์ดํธ ์ฝ๋ ์์ฑ๊ณผ ์คํ
- ํ์ฑ์ ๊ฒฐ๊ณผ๋ฌผ๋ก์ ์์ฑ๋
AST
๋ ์ธํฐํ๋ฆฌํฐ๊ฐ ์คํํ ์ ์๋ ์ค๊ฐ ์ฝ๋์ธ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋๊ณ ์ธํฐํ๋ฆฌํฐ์ ์ํด ์คํ. V8
์์ง์ ๊ฒฝ์ฐ ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋๋ ํฐ๋ณดํฌ(TurboFan
)์ด๋ผ ๋ถ๋ฆฌ๋ ์ปดํ์ผ๋ฌ์ ์ํด ์ต์ ํ๋ ๋จธ์ ์ฝ๋(optimized machine code
)๋ก ์ปดํ์ผ๋์ด ์ฑ๋ฅ์ ์ต์ ํ.- ์ฝ๋์ ์ฌ์ฉ ๋น๋๊ฐ ์ ์ด์ง๋ฉด ๋ค์ ๋์ตํฐ๋ง์ด์ง(
deoptimizing
)ํ๊ธฐ๋ ํจ.
๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ
DOM API
๋ฅผ ์ฌ์ฉํ์ฌDOM
์ด๋CSSOM
์ ๋ณ๊ฒฝํ ์ ์์- ๋ณ๊ฒฝ๋
DOM
๊ณผCSSOM
์ ๋ค์ ๋ ๋ํธ๋ฆฌ๋ก ๊ฒฐํฉ ๋๊ณ ๋ ์ด์์ ๊ณ์ฐ, ํ์ธํธ๊ณผ์ ์ ๊ฑฐ์ณ ๋ธ๋ผ์ฐ์ ์ ํ๋ฉด์ ๋ค์ ๋ ๋๋ง ํ๋ค, ์ด๋ฅผ ๋ฆฌํ๋ก์ฐ(reflow
), ๋ฆฌํ์ธํธ(repaint
)๋ผ๊ณ ํ๋ค. - ๋ฆฌํ๋ก์ฐ : ๋ ์ด์์ ๊ณ์ฐ์ ๋ค์ํ๋ ๊ฒ(๋ ธ๋ ์ถ๊ฐ/์ญ์ , ์์ ํฌ๊ธฐ/์์น ๋ณ๊ฒฝ, ์๋์ฐ ๋ฆฌ์ฌ์ด์ง ๋ฑ๋ฑ..)
- ๋ฆฌํ์ธํ
: ๋ณ๊ฒฝ๋ ์ฌํญ์ ๋ ๋ํธ๋ฆฌ์ ๊ฒฐํฉํ์ฌ ๋ค์ ํ์ธํ
ํ๋ ๊ณผ์ ์ ๋งํจ
๋ ์ด์์์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ ๋ ํ์ธํ ๋ง ์ผ์ด๋จ
์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ ์ํ HTML ํ์ฑ ์ค๋จ
- ๋ ๋๋ง ์์ง๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ณ๋ ฌ์ ์ผ๋ก ํ์ฑ์ ์คํํ์ง ์๊ณ ์ง๋ ฌ์ ์ผ๋ก ํ์ฑ์ ์ํํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋๊ธฐ์ (synchronous)์ผ๋ก, ์์์ ์๋ ๋ฐฉํฅ์ผ๋ก ์์ฐจ์ ์ผ๋ก ํ์ฑํ๊ณ ์คํํฉ๋๋ค
๋ฐ๋ผ์ script ํ๊ทธ์ ์์น๋ ์ค์ํ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
- ์๋ฅผ ๋ค์ด
header
์์ DOM์ ์กฐ์ํ๋ ๊ฒฝ์ฐ ์คํ ์์ ์ HTML ์์๊ฐ ์ ๋ถ ํ์ฑ๋์ด ๋ ๋ ํธ๋ฆฌ๊ฐ ํ์ฑ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ ์ ์๋ค. <script>
ํ๊ทธ๋ฅผ body ์์์ ๊ฐ์ฅ ์๋์ ์์น ์ํค๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ด๋ ๊ฒ ํ๋ฉด DOM์ด ์์ฑ๋ ์ํ์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์คํ ๋์ด ์๋ฌ๊ฐ ๋์ง ์์
์๋ฐ์คํฌ๋ฆฝํธ ๋ก๋ฉ/ํ์ฑ/์คํ ์ผ๋ก ์ธํด HTML์์๋ค์ ๋ ๋๋ง์ ์ง์ฅ๋ฐ๋ ์ผ์ด ๋ฐ์ํ์ง ์์ ํ์ด์ง ๋ก๋ฉ ์๊ฐ ๋จ์ถ
script ํ๊ทธ์ async / defer ์ดํธ๋ฆฌ๋ทฐํธ
- ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ ์ํ DOM ์์ฑ ์ค๋จ (
blocking
)๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HTML5๋ถํฐ script ํ๊ทธ์ async ์ defer ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ์ถ๊ฐ๋์๋ค. - async /defer ์ดํฐ๋ฆฌ๋ทฐํธ๋ src ํตํด ์ธ๋ถ ์๋ฐ์คํฌ๋ฆฌํธ ํ์ผ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ ์ ์๋ค.
- HTML ํ์ฑ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์งํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- async / defer ์ฐจ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์คํ ์์
async ์ดํธ๋ฆฌ๋ทฐํธ
- HTML ํ์ฑ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ๋ก๋๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ์งํ
- ๋จ, ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋๊ฐ ์๋ฃ๋ ์งํ ์งํ๋๋ฉฐ, ์ด๋ HTML ํ์ฑ ์ค๋จ
- script ํ๊ทธ์ ์์์ ์๊ด์์ด ๋ก๋๊ฐ ์๋ฃ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ถํฐ ์คํ๋๋ฏ๋ก ์์๊ฐ ๋ณด์ฅ๋์ง ์๋๋ค.
defer ์ดํธ๋ฆฌ๋ทฐํธ
- async ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ์งํ
- ๋จ, ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ์ HTML ํ์ฑ์ด ์๋ฃ๋ ์งํ, ์ฆ DOM ์์ฑ์ด ์๋ฃ๋ ์งํ ์งํ
DOM ์์ฑ์ด ์๋ฃ๋ ์งํ์ DOMContentLoaaded ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค.
'javascript > ๐ study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[9์ฃผ์ฐจ ์คํฐ๋]40์ฅ-์ด๋ฒคํธ (0) | 2022.03.27 |
---|---|
[8์ฃผ์ฐจ ์คํฐ๋]39์ฅ-DOM (0) | 2022.03.27 |
[7์ฃผ์ฐจ ์คํฐ๋]37์ฅ-Set ๊ณผ Map (0) | 2022.03.27 |
[7์ฃผ์ฐจ ์คํฐ๋]35์ฅ-๋์คํธ๋ญ์ฒ๋ง ํ ๋น (0) | 2022.03.27 |
[7์ฃผ์ฐจ ์คํฐ๋]35์ฅ-์คํ๋ ๋ ๋ฌธ๋ฒ (0) | 2022.03.27 |
๋๊ธ