ํฌ์ŠคํŠธ

๐ŸŒ’ 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 ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋ฆฌ์•กํŠธ๊ฐ€ ๋ Œ๋”๋งํ•œ๋‹ค

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.