๋ธ๋ผ์ฐ์ ๋ ๋๋ง
์ฐ๋ฆฌ๊ฐ ์์๋ก ๋๋๋๋ ์นํ์ด์ง๋ ์ด๋ค ์์ผ๋ก ๋์์ ํ ๊น์?.
์ฌ์ค ์นํ์ด์ง๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ ์ค์๊ฐ์ผ๋ก ๊ทธ๋ ค์ง๋ต๋๋ค.
์ด ๊ณผ์ ์ ์น ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ ์ด๋ผ๊ณ ๋งํ๊ตฌ์.
๊ทธ๋ฆผ์ผ๋ก ์ ๋ฆฌํ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ ๋๋ค.
๋๋ถ๋ถ์ ์ธํฐ๋ท ์น ๋ธ๋ผ์ฐ์ ๋ค์ ๋ถํดํด ๋ณด๋ฉด, ๊ทธ ์ธ์๋ ๋๊ฐ์ ์์ง์ด ๋ค์ด๊ฐ ์์ต๋๋ค.
ํ๋๋ ๋ ๋๋ง ์์ง ์ฌ์ฉ์๊ฐ ๋ณผ ํ๋ฉด์ ๊ทธ๋ ค๋ด์ฃ . ๋ค์์ jsEngine์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฝ์ด๋ด ๊ธฐ๋ฅ์ ๋์ํ๋ ์ญํ์ ํฉ๋๋ค.
์๋๋ ์์ ๊ทธ๋ฆผ์ ์์๋๋ก ๊ทธ๋ ค๋ธ ๊ฒ์ ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ ๋๋ง์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ ์๋ฒ๋ก ๋ถํฐ ์๋ต์ ๋ฐ๋๋ค.
- ์ฃผ์์ฐฝ์ ํตํด ํ์ํ ์ฌํญ๋ค์ ๋ด์ ๋ณด๋ธ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
- ์์ฒญ์ ์๋ต์ผ๋ก๋ HTML, CSS, JS ๋ฑ์ด ์์ต๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ HTML, CSS ๋ฅผ ํ์ฑํ์ฌ DOM๊ณผ CSSOM์ ์์ฑ ๊ฒฐํฉ ๋ ๋ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- ๋ธ๋ผ์ฐ์ ์ JS Engine์ ์๋ฒ๋ก ๋ถํฐ ์๋ต๋ JS๋ฅผ ํ์ฑ Tree๋ฅผ ์์ฑ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํํ์ฌ ์คํ๋๋ฉฐ JS ๋ฅผ ํตํด DOM, CSSOM๋ฑ์ ๊ด๋ฆฌํ๋ค.
- ๊ณ์ฐ → paint
1๋ฒ์ ๊ฒฝ์ฐ ajax๋ restful์ ๊ฐ๋ ์ด ๋ค์ด๊ฐ๋ ๋ค์์ ์ ๋ฆฌ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- ์ฝ๊ฒ ์๊ฐํ๋ฉด ์ฃผ์์ฐฝ์ ์ํ๋ ์ ๋ณด๋ค์ ๋ด์ ์์ฒญํ๊ณ ์๋ต ๋ฐ๋๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
HTML ํ์ฑ๊ณผ DOM ์์ฑ
๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ ์ํด ์๋ฒ๊ฐ ์๋ตํ HTML ๋ฌธ์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์์ํ ํ ์คํธ ์ ๋๋ค.
๊ทธ๋ผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ์ ์ ์๊ฒ ๋ณํ์ ํด์ค์ผ ํ๊ฒ ์ฃ ??
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<ul>
<li>Lorem ipsum dolor sit amet consectetur adipisicing elit.
</li>
<li>Lorem ipsum dolor sit amet consectetur adipisicing elit.
</li>
<li>Lorem ipsum dolor sit amet consectetur adipisicing elit.
</li>
</ul>
</body>
</html>
์๋ฅผ ๋ค์ด ์ด๋ฐ html ํ์ผ์ด ์๋ต์ผ๋ก ์๋ค๋ฉด, ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ณผ์ ์ ํตํด ์๋ต๋ฐ์ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ธ DOM์ ์์ฑํฉ๋๋ค.
CSS ํ์ฑ๊ณผ CSSOM ์์ฑ
์ ์ด์ HTML ํ์ฑ์ ๋๋ฌ๊ณ css์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ๊ฒ ์ฃ ???
css๋ HTML๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค.
- HTML์ ๋ํ ํ์ฑ์ ์งํ ํ๋ค๊ฐ link tag๋ฅผ ๋ง๋๊ฒ ๋๋ฉด ์๋ฒ์ cssํ์ผ์ ์์ฒญํ๊ณ ํ์ฑ์ ์ผ์ ์ค์งํฉ๋๋ค.
- ์ดํ HTML๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ํ์ฌ CSSOM์ ์์ฑํฉ๋๋ค. ์ดํ CSS ํ์ฑ์ ์๋ฃํ๋ฉด ์ค๋จ๋ ์์ ๋ถํฐ ๋ค์ HTML์ ํ์ฑํ๊ธฐ ์์ํ์ฌ DOM์ ์์ฑํฉ๋๋ค.
<link rel="stylesheet" href="style.css">
body {
font-size: 18px
}
ul {
list-style-type: none;
}
style.css
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ css ํ์ผ์ด ์๋ฒ๋ก๋ถํฐ ์๋ต ๋์๋ค๊ณ ๊ฐ์ ์ ํด๋ด ์๋ค!.
์๋ฒ๋ก๋ถํฐ cssํ์ผ์ด ์๋ต๋๋ฉด ๋ ๋๋ง ์์ง์ HTML๊ณผ ๋์ผํ ํด์๊ณผ์ (๋ฐ์ดํธ → ๋ฌธ์ → ํ ํฐ → ๋ ธ๋ → CSSSOM)์ ๊ฑฐ์ณ css๋ฅผ ํ์ฑํ์ฌ CSSOM์ ์์ฑํฉ๋๋ค.
Render Tree ์์ฑ
์ ์์์ ์ฐ๋ฆฌ๋ HTML๊ณผ CSS๋ฅผ ํ์ฑํด์ ๊ฐ๊ฐ DOM, CSSOM์ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋์ ๋ ๋๋ง์ ์ํด ๋ ๋ ํธ๋ฆฌ๋ก ๊ฒฐํฉ๋ฉ๋๋ค.
์ดํ ์์ฑ๋ ๋ ๋ ํธ๋ฆฌ๋ ๊ฐ HTML์์์ ๋ ์ด์์์ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํฝ์ ์ ๋ ๋๋ง ํ๋ ํ์ธํ ์ฒ๋ฆฌ์ ์ ๋ ฅ๋ฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ
- ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง์์ง์ด ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ฑํ์ฌ CPU๊ฐ ์ดํดํญ ์ ์๋ ์ ์์ค ์ธ์ด๋ก ๋ณํํ๊ณ ์คํํ๋ ์ญํ์ ํฉ๋๋ค.
- ๋ ๋๋ง ์์ง์ผ๋ก ๋ถํฐ ์ ์ด๊ถ์ ๋๊ฒจ ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ฑํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ์ฌ Abstract Syntax Trr(์ถ์๊ตฌ๋ฌธ ํธ๋ฆฌ)๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋ณด์๋ฉด์ ๊ธ์ ์ฝ์ด ๋ณด๋ฉด ์ข๋ ์ดํดํ๋๋ฐ ์์ ํ ๊ฒ๋๋ค.
๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ
๋ง์ฝ jscode์์ DOM์ด๋ CSSOM์ ๋ณ๊ฒฝํ๋ DOM api๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ณ๊ฒฝ๋ DOM์ด๋ CSSOM์ ๋ค์ ๋ ๋ํธ๋ฆฌ๋ก ๊ฒฐํฉ๋๊ณ
๋ณ๊ฒฝ๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์๊ณผ ํ์ธํธ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ธ๋ผ์ฐ์ ์ ํ๋ฉด์ ๋ค์ ๋ ๋๋ง ํ๋๋ฐ,
์ด๊ฒ์ ๋ฆฌํ๋ก์ฐ , ๋ฆฌํ์ธํธ๋ผ ํฉ๋๋ค.
- ๋ฆฌํ๋ก์ฐ๋ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ ธ๋ ์ถ๊ฐ,์ญ์ , ํฌ๊ธฐ๋ณ๊ฒฝ๋ฑ์ด ๋ฐ์ํ์ ๋์ ํํ์ฌ ์คํํฉ๋๋ค
- ๋ฆฌํ์ธํธ๋ ์ฌ๊ฒฐํฉ๋ ๋ ๋ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ํ์ธํธ๋ฅผ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ ์ธ๊ณ์ ์ธํฐ๋ท์ ํ๊ท ์๊ณ ๋ 30Mbps๋ฅผ ๋์ง ์๋๋ค๊ณ ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์์์ ์ค๋ช ํ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ์ตํ๊ณ ๊ฐ ํ๋ก์ธ์ค ๋ณ๋ก ์๊ฐ์ ํ๊ธฐ์ํด ๊ฒฝ๋ํ๋ ํ์ ์ ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง์ด๋? | ์์ฆIT