๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฅ๋ค์ด๋ธ ์คํฐ๋
๊ฐ๋ตํ๊ฒ
- HTML๊ณผ CSS ๋ฑ ๋ฆฌ์์ค๋ฅผ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ผ๋ฉด, ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์์ ํ์ฑํ๋ค.
- HTML์ ํ์ฑํ๋ฉด์ DOMํธ๋ฆฌ์ CSSOMํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- DOMํธ๋ฆฌ์ CSSOMํธ๋ฆฌ๋ฅผ ๊ฒฐํฉํค์ Render ํธ๋ฆฌ๋ฅผ ์์ฑํ ํ, ๋ ์ด์์ ์์ ๊ณผ ํ์ธํ ์์ ์ ํ๋ค.
์์ธํ๊ฒ
- ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ์์ง์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ HTML์ ํ ํฐ(๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ฝ๋์ ์ต์ ๋จ์)์ผ๋ก ๋ถํดํ๋ค.
- ๊ฐ ํ ํฐ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ๋
ธ๋๋ค์ ์์ฑํ๋ค.
๊ฐ ๋ ธ๋๋ค์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด๋ฅผ DOM์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. - HTML์ ํ ์ค์ฉ ํ์ฑํด๋๊ฐ๋ค๊ฐ linkํ๊ทธ๋ styleํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM์์ฑ์ ์ผ์์ค๋จํ๊ณ CSSํ์ผ์ ์๋ฒ์ ์์ฒญํ๋ค.
- ์์ฒญ๋ฐ์ CSSํ์ผ ๋๋ styleํ๊ทธ ์์ CSS๋ฅผ ํ์ฑํ์ฌ CSSOM์ ์์ฑํ๋ค.
- HTML ํ์ฑ์ ๋ง์ ์งํํ๋ค.
- DOM๊ณผ CSSOM์ ๊ฒฐํฉํ์ฌ ๋ ๋ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- ๋ ๋ํธ๋ฆฌ๋ ๋ ๋๋ง์ ์ํ ํธ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๋๋ ๋ ธ๋๋ง์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ๋ ๋ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTML ์์์ ๋ ์ด์์(์์น, ํฌ๊ธฐ)์ ๊ณ์ฐ์ ํ ํ, ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํ์ธํธ ์์
์ ํ๋ค.
๋ ์ด์์ ๊ณ์ฐ๊ณผ ํ์ธํธ๋ฅผ ๋ค์ ์คํํ๋ ๋ฆฌ๋ ๋๋ง์ ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํ ๊ฒ!
๋ฆฌํ์ธํธ : ๋ ์ด์์ ๋ณ๊ฒฝ ์๋ ๊ฒฝ์ฐ, ์ ๋ฐ์ดํธ๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ธํธ๋ง ๋ค์ ์คํ๋๋ ๊ฒ
๋ฆฌํ๋ก์ฐ : ๋ ์ด์์ ๊ณ์ฐ๋ถํฐ ํ์ธํธ๊น์ง ๋ค์ ํด์ผ ํ๋ ๊ฒ
๐กJS๋ ์ด๋ป๊ฒ ํ์ฑ๋ ๊น?
HTML์ ํ์ฑํ๋ฉด์ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด HTMLํ์ฑ์ด ์ค๋จ๋๊ณ Javascript๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ฑํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฒ๋ฆฌํ๋ค.(Not ๋ ๋๋ง ์์ง)
์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํฌ๋กฌ์์ ์ฌ์ฉํ๋ V8
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ค์ฝ๋๋ฅผ ํ ํฐ์ผ๋ก ๋ถํดํ๋ค.
- ํ ํฐ๋ค์ ์งํฉ์ ๊ตฌ๋ฌธ๋ถ์ํ์ฌ AST(์ถ์์ ๊ตฌ๋ฌธ ํธ๋ฆฌ)๋ฅผ ์์ฑํ๋ค.
- AST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ธํฐํ๋ฆฌํฐ๊ฐ ์ด๋ฅผ ์คํํ๋ค.
(AST๋ฅผ ์ฌ์ฉํด์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ๊ตฌํํ ์ ์๋ค)
DOMํธ๋ฆฌ๊ฐ ์์ฑ๋๊ธฐ ์ ์ Javascript๊ฐ ์คํ๋๋ฉด ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ์ ์๋ค.
-> ๋ฐ๋ผ์ async/defer ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฌ์ฉํด์ ๋น๋๊ธฐ์ ์ผ๋ก javascript๋ฅผ ๋ก๋ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
async๋ ๋น๋๊ธฐ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋ํ์ง๋ง ๋ก๋๊ฐ ์๋ฃ๋ ์งํ ์คํ๋๊ธฐ ๋๋ฌธ์ HTML ํ์ฑ์ด ์๋ฃ๋์ง ์์ ์ํ์์ ์คํ๋ ์ ์๋ค.
defer๋ ๋น๋๊ธฐ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋ํ๊ณ HTML ํ์ฑ์ด ์๋ฃ๋ ์งํ ์คํ๋๋ค. ํ์๋ ์ฃผ๋ก defer๋ฅผ ์ฌ์ฉํ๋ค.
'๐ป ํ๋ก ํธ์๋ > ๐ JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ์คํฌ๋ฆฝํธ] ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ด๋ฒคํธ๋ฃจํ (0) | 2023.12.27 |
---|---|
[์๋ฐ์คํฌ๋ฆฝํธ] ํด๋ก์ (1) | 2023.12.27 |
[์๋ฐ์คํฌ๋ฆฝํธ] ์คํ์ปจํ ์คํธ (0) | 2023.12.27 |
[์๋ฐ์คํฌ๋ฆฝํธ] ์ค์ฝํ (0) | 2023.12.27 |
[์๋ฐ์คํฌ๋ฆฝํธ] This (0) | 2023.12.27 |