๋ชฉ์ฐจ
์ธํฐ๋ท ์ฃผ์์ฐฝ์ URL์ ์ ๋ ฅํ์ ๋, ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง๋ฅผ ๋ณด๊ธฐ๊น์ง ๊ฑฐ์น๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ URL์ ์ ๋ ฅํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์ ๋ ฅ๋ URL์ ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ์ IP ์ฃผ์๋ฅผ ์ฐพ๊ธฐ ์ํด DNS(Domain Name System)์๊ฒ DNS ์กฐํ ์์ฒญ์ ํฉ๋๋ค. DNS๋ ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋งคํํด ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
- DNS๋ ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ๋ณํํ์ฌ ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ตํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ํด๋น IP ์ฃผ์๋ก ์๋ฒ์ HTTP ์์ฒญ์ ๋ณด๋ ๋๋ค. ์ด ์์ฒญ์ HTTP ํ๋กํ ์ฝ์ ๋ฐ๋ผ ๊ตฌ์ฑ๋๋ฉฐ, ์์ฒญ ๋ฉ์๋(GET, POST ๋ฑ)์ ํค๋(์์ฒญ์ ์ถ๊ฐ ์ ๋ณด)๋ฅผ ํฌํจํฉ๋๋ค.
- ์๋ฒ๋ ์์ฒญ์ ๋ฐ๊ณ ํด๋นํ๋ ๋ฆฌ์์ค(HTML, CSS, JavaScript ํ์ผ ๋ฑ)๋ฅผ ์ฐพ์์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ตํฉ๋๋ค. ์๋ต์ HTTP ํ๋กํ ์ฝ์ ๋ฐ๋ผ ๊ตฌ์ฑ๋๋ฉฐ, ์ํ ์ฝ๋(200, 404 ๋ฑ)์ ์๋ต ๋ณธ๋ฌธ(๋ฆฌ์์ค์ ๋ด์ฉ)์ ํฌํจํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ์์ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์๋ต ๋ณธ๋ฌธ์ ํฌํจ๋ HTML, CSS, JavaScript ๋ฑ์ ๋ฆฌ์์ค๋ฅผ ํ์ฑํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
- HTML ํ์ฑ: ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ DOM(Document Object Model)์ ์์ฑํฉ๋๋ค. DOM์ ์น ํ์ด์ง์ ๊ตฌ์กฐ์ ์ฝํ ์ธ ๋ฅผ ๋ํ๋ด๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก, ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ํํ์ ๋๋ค.
- CSS ํ์ฑ: ๋ธ๋ผ์ฐ์ ๋ CSS ์คํ์ผ ์ํธ๋ฅผ ํ์ฑํ์ฌ CSSOM(CSS Object Model)์ ์์ฑํฉ๋๋ค. CSSOM์ DOM๊ณผ ์ ์ฌํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก, ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฉํ CSS ์คํ์ผ ๊ท์น์ ๋ํ๋ ๋๋ค.
- DOM๊ณผ CSSOM ๊ฒฐํฉ: ๋ธ๋ผ์ฐ์ ๋ DOM๊ณผ CSSOM์ ๊ฒฐํฉํ์ฌ ๋ ๋ ํธ๋ฆฌ(Render Tree)๋ฅผ ์์ฑํฉ๋๋ค. ๋ ๋ ํธ๋ฆฌ๋ ํ๋ฉด์ ์ค์ ๋ก ๊ทธ๋ ค์ง ์์๋ค๋ก ๊ตฌ์ฑ๋๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋๋ค. ์ด ๊ณผ์ ์์ CSS ์คํ์ผ์ด ์ ์ฉ๋ ์์๋ค์ด ์ ํ๋๊ณ , ๋ ์ด์์์ ๊ณ์ฐํ๊ธฐ ์ํด ์์น์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์๋ค์ ํ๋ฉด์ ํ์ธํ ํ์ฌ ์ฌ์ฉ์์๊ฒ ์น ํ์ด์ง๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ํฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด ์ฌ์ฉ์๋ ์ ๋ ฅํ URL์ ๊ธฐ๋ฐ์ผ๋ก ์น ํ์ด์ง๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค.
๊ฐ ๋จ๊ณ์์๋ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์์ฒญ๊ณผ ์๋ต์ด ์ด๋ฃจ์ด์ง๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฆฌ์์ค๋ฅผ ํ์ฑํ๊ณ ์ฒ๋ฆฌํ์ฌ ์ต์ข ์ ์ผ๋ก ๋ ๋๋ง ๋ ์น ํ์ด์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํฉ๋๋ค.
์น ์์ฒญ๊ณผ ์๋ต: ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๊น์ง์ ํต์ ๊ณผ์
์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋ฉด ์นํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค๊ณ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์์ ์๋ฒ์์ ํต์ ์ด ์ด๋ฃจ์ด์ง๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์น ์์ฒญ๊ณผ ์๋ต์ด ์ด๋ป๊ฒ ์ด๋ค์ง๋์ง์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์น ์์ฒญ๊ณผ ์๋ต ๊ณผ์ ์ ๋ค์ํ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉฐ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํ์์ต๋๋ค.
- URL์ ํตํ ์๋ฒ ์์ฒญ: ๋จผ์ , ์น ๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ ์ ๋ ฅํ URL์ ์๋ฒ์ IP ์ฃผ์๋ก ๋ณํ๋ฉ๋๋ค. ์ด๋ฅผ ์ํด DNS(Domain Name System) ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ก ํด์ํฉ๋๋ค. ๋ณํ๋ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์๋ฒ์ ์น ์์ฒญ์ ์ ์กํ๊ฒ ๋ฉ๋๋ค.
- ์๋ฒ๋ก๋ถํฐ์ ์๋ต: ์๋ฒ๋ ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ฐพ์์ ๋ธ๋ผ์ฐ์ ๋ก ์๋ตํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฃจํธ ์์ฒญ์ ๋ํ ์๋ฌต์ ์ธ ๊ท์น์ผ๋ก์ index.html ํ์ผ์ ์๋ตํ๋๋ก ์ค์ ๋์ด ์์ต๋๋ค. ์๋ฒ๋ ํด๋น ํ์ผ์ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํฉ๋๋ค.
- ๋ค์ค ๋ฆฌ์์ค ์์ฒญ: ๋ฐ์ index.html ํ์ผ์ ๋ธ๋ผ์ฐ์ ๋ ๋ถ์ํ์ฌ ๋ ๋๋ง์ ์์ํฉ๋๋ค. ๊ทธ๋ฌ๋ index.html ํ์ผ์๋ CSS ํ์ผ์ ๋ก๋ํ๋ link ํ๊ทธ๋ JavaScript ํ์ผ์ ๋ก๋ํ๋ script ํ๊ทธ๊ฐ ์์ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ์๋ฒ์ ์ถ๊ฐ ์์ฒญํ๊ฒ ๋๋ฉฐ, ์๋ฒ๋ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์๋ตํฉ๋๋ค.
์นํ์ด์ง ๋ ๋๋ง:
- HTML ํ์ฑ: ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ HTML ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ํด๋น ํ์ผ์ ๋ฌธ์์ด๋ก ๋ณํํฉ๋๋ค. ์ด๋ meta ํ๊ทธ์ charset ์์ฑ์ ํตํด ์ธ์ฝ๋ฉ ๋ฐฉ์์ ํ์ธํ๊ณ ๋ฌธ์์ด๋ก ๋ณํํฉ๋๋ค.
- ํ ํฐํ: ๋ฌธ์์ด๋ก ๋ณํ๋ HTML ํ์ผ์ ๋ฌธ๋ฒ์ ์ผ๋ก ์๋ฏธ ์๋ ์ฝ๋์ ์ต์ ๋จ์์ธ ํ ํฐ์ผ๋ก ๋ถํด๋ฉ๋๋ค. ๊ฐ ํ ํฐ์ ๊ฐ์ฒด๋ก ๋ณํ๋์ด ๋ ธ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์์ฑ๋๋ ๋ ธ๋๋ document ๋ ธ๋, element ๋ ธ๋, attribute ๋ ธ๋, text ๋ ธ๋ ๋ฑ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ผ๋ฉฐ, ์ด๋ค ๋ ธ๋๋ DOM์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์์์ ๋๋ค.
- DOM ์์ฑ: HTML์ element์ ์งํฉ์ผ๋ก์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ด๋ค element๋ ์ค์ฒฉ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋๋ค. ๊ฐ element์ ์ค์ฒฉ ๊ด๊ณ์ ๋ฐ๋ผ ๋ถ๋ชจ์ ์์ ๊ด๊ณ๊ฐ ํ์ฑ๋๊ณ , ์ด๋ฅผ ๋ฐ์ํ์ฌ ๋ชจ๋ ๋ ธ๋๋ค์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ์์ฑ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ DOM(Document Object Model)์ด๋ผ๊ณ ํฉ๋๋ค.
1 | URL์ ํตํด ์๋ฒ์ ์์ฒญ ์ ์ก |
2 | ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฆฌ์์ค ์๋ต ๋ฐ์ |
3 | ๋ค์ค ๋ฆฌ์์ค ์์ฒญ (CSS ํ์ผ, JavaScript ํ์ผ ๋ฑ) |
4 | HTML ํ์ฑ ๋ฐ ๋ฌธ์์ด ๋ณํ |
5 | ํ ํฐํ ๋ฐ ๋ ธ๋ ์์ฑ |
6 | DOM ์์ฑ ๋ฐ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ ๊ตฌ์ฑ |
CSS ํ์ฑ๊ณผ CSSOM ์์ฑ์ ๋ํด ์์๋ณด๊ธฐ
์๊ฐ: ์น ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ DOM์ ์์ฑํ๋ ๊ณผ์ ์์ CSS๋ฅผ ๋ก๋ํ๊ณ CSSOM์ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ๊ณผ์ ์ ์น ํ์ด์ง์ ๋ ๋๋ง์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ CSS ํ์ฑ๊ณผ CSSOM ์์ฑ์ ๋ํด ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- CSS ํ์ฑ๊ณผ DOM ์์ฑ ์ค๋จ ์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ HTML์ ์์ฐจ์ ์ผ๋ก ํ์ฑ ํ๋ฉด์ DOM์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฌ๋ CSS๋ฅผ ๋ก๋ํ๋ link ํ๊ทธ๋ style ํ๊ทธ๊ฐ ๋ฑ์ฅํ๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํฉ๋๋ค.
- CSS ํ์ฑ๊ณผ CSSOM ์์ฑ CSS ํ์ผ์ ๋ก๋ํ๊ธฐ ์ํด link ํ๊ทธ์ href ์์ฑ์ ์ง์ ๋ ํ์ผ์ ์๋ฒ์ ์์ฒญํฉ๋๋ค. ์๋ต๋ฐ์ CSS ํ์ผ์ด๋ style ํ๊ทธ ๋ด์ CSS๋ ๋ฐ์ดํธ์์ ๋ฌธ์๋ก ๋ณํ๋ ํ ํ ํฐํ๋๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก CSSOM์ ์์ฑํฉ๋๋ค.
CSSOM์ CSS์ ์์์ ๋ฐ์ํ์ฌ ์์ฑ๋๋ฉฐ, ๋ถ๋ชจ ์์์ ์ ์ฉ๋ ํ๋กํผํฐ๋ ์์ ์์์ ์์๋์ด CSSOM์ ๋ฐ์๋ฉ๋๋ค.
- CSS ํ์ฑ ์๋ฃ ํ DOM ์์ฑ ์ฌ๊ฐ CSS ํ์ฑ์ด ์๋ฃ๋๋ฉด ์ค๋จ๋ ์ง์ ๋ถํฐ ๋ค์ ํ์ฑํ๋ฉด์ DOM ์์ฑ์ ๊ณ์ํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ CSSOM๊ณผ DOM์ด ๊ฒฐํฉ๋์ด Render Tree๋ฅผ ์์ฑํฉ๋๋ค.
Render Tree๋ ๋ ๋๋ง์ ์ํ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก, ์ค์ ํ๋ฉด์ ๋ ๋๋ง๋๋ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํ๋ฉด์ ํ์๋์ง ์๋ ๋ ธ๋๋ CSS์ display: none ์์ฑ์ ๊ฐ์ง ๋ ธ๋๋ ์ ์ธ๋ฉ๋๋ค.
- Render Tree์ ๋ ๋๋ง ์์ฑ๋ Render Tree๋ ๊ฐ HTML ์์์ ์์น์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๋ ์ด์์ ๊ณ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ Render Tree๋ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํฝ์ ์ ๋ ๋๋ง ํ๋ ๊ณผ์ ์์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฌํ ๋ ๋๋ง ๊ณผ์ ์ ํ์์ ๋ฐ๋ผ ๋ฐ๋ณตํด์ ์คํ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด JavaScript์ ์ํ ๋ ธ๋ ์ถ๊ฐ ๋๋ ์ญ์ , ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ ๋ณ๊ฒฝ, ์คํ์ผ ๋ณ๊ฒฝ ๋ฑ์ด ํด๋น๋ฉ๋๋ค. ๋น๋ฒํ re-rendering์ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
- JavaScript ํ์ฑ๊ณผ ์คํ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ์์ฑ๋ DOM์ JavaScript๋ก ๋์ ์ผ๋ก ์กฐ์ํ ์ ์๋ DOM API๋ฅผ ์ ๊ณตํฉ๋๋ค. JavaScript ์ฝ๋๊ฐ ์คํ๋์ด์ผ DOM์ ์กฐ์ํ๊ธฐ ์ํด JavaScript ํ์ฑ ๋ฐ ์คํ์ด ์งํ๋ฉ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ํ์ฑํ๋ค๊ฐ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํฉ๋๋ค. script ํ๊ทธ์ src ์์ฑ์ ์ง์ ๋ JavaScript ํ์ผ์ ์๋ฒ์ ์์ฒญํ์ฌ ์๋ต์ ๋ฐ์ ํ, JavaScript ์์ง์ ์ ์ด๊ถ์ ๋๊น๋๋ค. JavaScript ์์ง์ JavaScript ์ฝ๋๋ฅผ ํ์ฑ ํ์ฌ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ ์์ค ์ธ์ด์ธ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ๊ณ ์คํํฉ๋๋ค.
JavaScript ํ์ฑ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Tokenizing (ํ ํฐํ): ๋จ์ํ ๋ฌธ์์ด์ธ JavaScript ์์ค์ฝ๋๋ฅผ ๋ ์์ปฌ ๋ถ์ํ์ฌ ํ ํฐ์ผ๋ก ๋ถํดํฉ๋๋ค.
- Parsing (ํ์ฑ): ํ ํฐ์ ์งํฉ์ ๊ตฌ๋ฌธ ๋ถ์ํ์ฌ ์ถ์์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST)๋ฅผ ์์ฑํฉ๋๋ค. AST๋ ํ ํฐ์ ๋ฌธ๋ฒ์ ์๋ฏธ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ์ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
- Byte code ์์ฑ ๋ฐ ์คํ: ํ์ฑ๋ AST๋ ์ธํฐํ๋ฆฌํฐ๊ฐ ์คํํ ์ ์๋ ์ค๊ฐ ์ฝ๋์ธ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋๊ณ , ์ธํฐํ๋ฆฌํฐ์ ์ํด ์คํ๋ฉ๋๋ค.
JavaScript ์์ง์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ๊ตฌ๊ธ ํฌ๋กฌ ๋ฐ Node.js๋ V8 ์์ง์ ์ฌ์ฉํ๊ณ , ํ์ด์ดํญ์ค๋ SpiderMonkey ์์ง์ ์ฌ์ฉํฉ๋๋ค.
์ ๋ฆฌ: CSS ํ์ฑ๊ณผ CSSOM ์์ฑ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ค ์ค์ํ ๋จ๊ณ์ ๋๋ค. CSS ํ์ผ์ ๋ก๋ํ๊ณ ํ์ฑ ํ์ฌ CSSOM์ ์์ฑํ ํ, ์ด์ DOM์ ๊ฒฐํฉํ์ฌ Render Tree๋ฅผ ์์ฑํฉ๋๋ค. Render Tree๋ ์ค์ ํ๋ฉด์ ๋ ๋๋ง ๋๋ ๋ ธ๋๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ Render Tree๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์์ ๊ณ์ฐํ๊ณ ํ๋ฉด์ ํฝ์ ์ ๋ ๋๋ง ํฉ๋๋ค.
๋ํ, JavaScript ํ์ฑ๊ณผ ์คํ์ HTML ๋ฌธ์์ ํ์ฑ ๊ฒฐ๊ณผ๋ก ์์ฑ๋ DOM์ ๋์ ์ผ๋ก ์กฐ์ํ๊ธฐ ์ํด ์ํ๋ฉ๋๋ค. JavaScript ์ฝ๋๋ ํ์ฑ ๋์ด AST๊ฐ ์์ฑ๋๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธํฐํ๋ฆฌํฐ๊ฐ ์คํํ ์ ์๋ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋๊ณ ์คํ๋ฉ๋๋ค.
๋ ๋๋ง ๊ณผ์ ์ ํ์์ ๋ฐ๋ผ ๋ฐ๋ณตํด์ ์คํ๋ ์ ์์ผ๋ฉฐ, ์ฃผ์ํด์ผ ํ ์ ์ ๋น๋ฒํ re-rendering์ด ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค๋ ์ ์ ๋๋ค. ๋ฐ๋ผ์ ์ ์ ํ ์ต์ ํ๋ฅผ ๊ณ ๋ คํ์ฌ ๋ ๋๋ธ๋ก๊ทธ ๊ธ์ ์ํด ์์ฑํ ๋ด์ฉ์ ๋๋ค. ์๋๋ ๊ตฌ์กฐ์ ์ธ ์์ฝ๊ณผ ํจ๊ป ํ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
CSS ํ์ฑ๊ณผ CSSOM ์์ฑ์ ๋ํด ์์๋ณด๊ธฐ
์๊ฐ
์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ HTML ๋ฌธ์๋ฅผ ํ์ฑ ํ์ฌ DOM์ ์์ฑํ๋ฉฐ, CSS๋ฅผ ๋ก๋ํ์ฌ CSSOM์ ์์ฑํฉ๋๋ค. ์ด ๊ธ์์๋ CSS ํ์ฑ๊ณผ CSSOM ์์ฑ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
CSS ํ์ฑ๊ณผ CSSOM ์์ฑ
- CSS ํ์ผ ๋ก๋: link ํ๊ทธ์ href ์์ฑ์ ์ง์ ๋ CSS ํ์ผ์ ์๋ฒ์ ์์ฒญํฉ๋๋ค.
- CSS ํ์ฑ ๊ณผ์ : ์๋ต๋ฐ์ CSS ํ์ผ์ ๋ฌธ์์ด๋ก ๋ณํ๋ ํ ํ ํฐํ, ๋ ธ๋ํ๋์ด CSSOM์ ์์ฑํฉ๋๋ค.
- CSSOM ์์ฑ: CSSOM์ CSS์ ์์์ ๋ฐ์ํ์ฌ ์์ฑ๋๋ฉฐ, ๋ถ๋ชจ ์์์ ์ ์ฉ๋ ํ๋กํผํฐ๊ฐ ์์ ์์์ ์์๋ฉ๋๋ค.
DOM ์์ฑ ์ฌ๊ฐ
CSS ํ์ฑ์ด ์๋ฃ๋๋ฉด ์ค๋จ๋ ์ง์ ๋ถํฐ ๋ค์ ํ์ฑ ํ๋ฉด์ DOM ์์ฑ์ ๊ณ์ํฉ๋๋ค.
Render Tree ์์ฑ
- DOM๊ณผ CSSOM ๊ฒฐํฉ: ์์ฑ๋ DOM๊ณผ CSSOM์ Render Tree๋ก ๊ฒฐํฉ๋ฉ๋๋ค.
- Render Tree ๊ตฌ์ฑ: Render Tree๋ ์ค์ ํ๋ฉด์ ๋ ๋๋ง ๋๋ ๋ ธ๋๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ๋ฉด์ ํ์๋์ง ์๋ ๋ ธ๋๋ ์ ์ธ๋ฉ๋๋ค.
๋ ๋๋ง๊ณผ ๋ฆฌ๋ ๋๋ง
- ๋ ๋๋ง: Render Tree๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์์ ๊ณ์ฐํ๊ณ ํ๋ฉด์ ํฝ์ ์ ๋ ๋๋ง ํฉ๋๋ค.
- ๋ฆฌ๋ ๋๋ง: JavaScript๋ก ์ธํ ๋ ธ๋ ์ถ๊ฐ/์ญ์ , ์ฐฝ ํฌ๊ธฐ ๋ณ๊ฒฝ, ์คํ์ผ ๋ณ๊ฒฝ ๋ฑ์ผ๋ก ์ธํด ๋ ๋๋ง ๊ณผ์ ์ด ๋ฐ๋ณต๋ ์ ์์ต๋๋ค.
JavaScript ํ์ฑ๊ณผ ์คํ
- ์ ์ด๊ถ ์ด์ : script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํ๊ณ JavaScript ํ์ผ์ ์์ฒญํฉ๋๋ค.
- JavaScript ํ์ฑ: JavaScript ์ฝ๋๋ ํ ํฐํ, ํ์ฑ ํ์ฌ AST๋ฅผ ์์ฑํฉ๋๋ค.
- ์คํ: AST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋์ด JavaScript ์์ง์ ์ํด ์คํ๋ฉ๋๋ค.
๋๊ธ