๐ DOM
๋ชฉํ :
- DOM ?
- Physical DOM, Virtual DOM ?
๐ซ Dynamic HTML - DHTML
1997 MS DHTML ๊ธฐ์ ๋ฐํ
Static HTML - SHTML ๋ฐฉ์ :
โ User์๊ฒ ๋ณด์ผ HTML์ ์๋ฒ์์ ์์ฑํ์ฌ ๋ณด๋
โ โ ๋ฌธ์์ ๊ตฌ์กฐ/๋ฐ์ดํฐ๊ฐ ๋ณํ์ง ์๋ ๊ฒ๋ค (I.E. ํ์ฌ ์ ๋ณด, ๋ฉ๋ด ๋ฑ)
Dynamic HTML - DHTML ๋ฐฉ์ :
โ Browser์์ JS๋ฅผ ํตํด ๋์ ์ผ๋ก HTML ๋ฌธ์ ์์ฑ
โ Browser๊ฐ HTML ํ์ผ์ Parsing ํ์ฌ JS ๊ฐ์ฒด ๊ตฌ์กฐ (๊ฐ๋ฐ์ ๋๊ตฌ ๋๋ฅด๋ฉด ๋์ค๋) ์์ฑ
โ ์์ ๊ด๊ณ๋ก ์ค๊ณํ DOM
ํ์
JS ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ์
โ โ ๋ฌธ์์ ๊ตฌ์กฐ/๋ฐ์ดํฐ๊ฐ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒ๋ค (= ํ๋ ๊ฑฐ์ ๋ชจ๋ ์น ํ์ด์ง)
@ โ React, DHTML
๐ซ Document Object Model - DOM
HTML Tag๋ฅผ ๊ฐ์ฒด/์์๋ก์ ๋ณด๊ณ ,
์์ ๋ผ๋ฒจ๋งํ๊ณ , ์์ ๊ฐ์ ๊ด๊ณ๋ฅผ Tree
๋ก ๋ง๋ฆ
์ Why? ๋จ์ HTML ํ
์คํธ๋ก๋ ํน์ ์์๋ฅผ ๊ฒ์ํ๊ธฐ ์ด๋ ค์
โ DOM์ผ๋ก ๋ง๋ค๋ฉด ํน์ ์์๋ฅผ JS๋ก ์ฝ๊ฒ ์ ๊ทผ/๋ณ๊ฒฝํ ์ ์์
@ CSS Object Model - CSSOM
@ โ CSS ํด๋์ค๋ฅผ ๊ฐ์ฒด๋ก์ ๋ณด๊ณ โฆ @ DOM + CSSOM => Render Tree
div, h1 ๊ฐ์ HTML Tag,
JS ์ฝ๋ ๊ด์ ์์๋ (~ ํด๋์ค = DOM)์ ์ธ์คํด์ค
div : (HTMLDivElement ํด๋์ค = DOM)์ ์ธ์คํด์ค, DOM ๊ฐ์ฒด
h1 : (HTMLHeadingElement ํด๋์ค = DOM)์ ์ธ์คํด์ค, DOM ๊ฐ์ฒด
DOM (Tree) Structure - DOM (ํธ๋ฆฌ) ๊ตฌ์กฐ
DOM ๊ฐ์ฒด๊ฐ ์ด๋ฃจ๋ ๋ถ๋ชจ/์์ ํํ์ Tree Structure
Rendering
๋ธ๋ผ์ฐ์ ๊ฐ HTML โ Parsing โ JS DOM (ํธ๋ฆฌ) ๊ตฌ์กฐ ๋ง๋๋ ๊ณผ์
์ฐธ๊ณ : ์น ๋ธ๋ผ์ฐ์
๐ซ Physical DOM - ๋ฌผ๋ฆฌ DOM, Virtual DOM - ๊ฐ์ DOM
@ U ์ค๊ฐ๊ณ ์ฌ ์ถ์ : ๋ฌผ๋ฆฌDOM & ๊ฐ์DOM
- React (Native) Framework ํ์
- Physical DOM, Virtual DOM
Physical DOM
โ ๋ธ๋ผ์ฐ์ ์์ JS๊ฐ ์์ฑํ๋ ์ค์ DOM ๊ตฌ์กฐ
Virtual DOM
โ ๋ฆฌ์กํธ ์ฝ๋๊ฐ ์์ฑํ JS ๊ฐ์ฒด ๊ตฌ์กฐ
โ DOM Node Tree๋ฅผ ๋ณต์ ํ JS ๊ฐ์ฒด
๋ฆฌ์กํธ๊ฐ ํน์ ์์ ์ Virtual DOM ๊ตฌ์กฐ๋ฅผ Physical DOM ๊ตฌ์กฐ๋ก ๋ณํ
Renderer ํจํค์ง๋ฅผ ํตํด ๋ฆฌ์กํธ๊ฐ ๋ ๋๋งํ๋ค