# [[DOM(Document Object Model)|DOM(Document Object Model)]] ## ๐Ÿ“Œ Brief Summary DOM(Document Object Model)์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ๋งˆํฌ์—…์„ ๋‚ด๋ถ€์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•˜๋Š” ๊ณ„์ธต์ ์ธ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๊ฐ์ฒด ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค [1, 2]. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด์„œ ์ ์ง„์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉฐ, ์›น ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ์™€ ์š”์†Œ ๊ฐ„์˜ ๊ตฌ์กฐ์  ๊ด€๊ณ„๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [1, 3, 4]. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ๋‚ด์˜ ๋‹ค์–‘ํ•œ API๋ฅผ ํ†ตํ•ด DOM์— ์ ‘๊ทผํ•˜๊ณ  ์ด๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2]. ## ๐Ÿ“– Core Content - **DOM ์ƒ์„ฑ ๊ณผ์ • (DOM Construction Process)** ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ๋ฌธ์„œ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ์ฆ‰์‹œ ํŒŒ์‹ฑ(Parsing)์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค [5]. ์ด ๊ณผ์ •์€ ์ „์ฒด ๋ฌธ์„œ๊ฐ€ ๋„์ฐฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ ์ง„์ (incremental)์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค [1]. ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ(๋ฐ”์ดํŠธ)๋Š” ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋˜๊ณ , ์ดํ›„ ํ† ํฐ(tokens)์œผ๋กœ ๋ณ€ํ™˜๋œ ๋‹ค์Œ ์ตœ์ข…์ ์œผ๋กœ ๋…ธ๋“œ(nodes)๋กœ ๋ณ€ํ™˜๋˜์–ด ๊ณ„์ธต์ ์ธ DOM ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค [1, 6]. ์‹œ์ž‘ ํƒœ๊ทธ(startTag)์™€ ์ข…๋ฃŒ ํƒœ๊ทธ(endTag) ์‚ฌ์ด์— ๋‹ค๋ฅธ ํƒœ๊ทธ๋“ค์ด ํฌํ•จ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋…ธ๋“œ ๊ฐ„์˜ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์ •์˜๋ฉ๋‹ˆ๋‹ค [6]. - **ํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ ๊ตฌ์„ฑ (Tree Structure and Composition)** DOM ํŠธ๋ฆฌ๋Š” ๋ฌธ์„œ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ฌ˜์‚ฌํ•˜๋ฉฐ, `` ์š”์†Œ๊ฐ€ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์ด์ž ๋ฃจํŠธ(root) ๋…ธ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค [4]. ๋‹ค๋ฅธ ์š”์†Œ ์•ˆ์— ์ค‘์ฒฉ๋œ ์š”์†Œ๋“ค์€ ์ž์‹ ๋…ธ๋“œ(child nodes)๊ฐ€ ๋˜์–ด ํŠธ๋ฆฌ ๋‚ด๋ถ€์—์„œ ๊ฐ ์š”์†Œ์˜ ๊ด€๊ณ„์™€ ๊ณ„์ธต์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค [4]. ์ƒ์„ฑ๋œ DOM ํŠธ๋ฆฌ๋Š” ์ดํ›„ ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” CSSOM(CSS Object Model)๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ™”๋ฉด์— ๊ทธ๋ ค์งˆ ์š”์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ Œ๋” ํŠธ๋ฆฌ(Render Tree)๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [7, 8]. - **์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ (Performance Implications)** DOM ํŠธ๋ฆฌ์˜ ๊นŠ์ด์™€ ๋ณต์žก์„ฑ์€ ๋ธŒ๋ผ์šฐ์ €์˜ ์„ฑ๋Šฅ๊ณผ ์ง๊ฒฐ๋ฉ๋‹ˆ๋‹ค [9]. DOM์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ Œ๋” ํŠธ๋ฆฌ ์ƒ์„ฑ, ๋ ˆ์ด์•„์›ƒ(Layout), ํŽ˜์ธํŠธ(Paint)์™€ ๊ฐ™์€ ์ค‘์š” ๋ Œ๋”๋ง ๊ฒฝ๋กœ(Critical Rendering Path)์˜ ํ›„์† ์ž‘์—…์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„๊ณผ ์—ฐ์‚ฐ ๋ถ€๋‹ด์ด ์ปค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [3, 4, 9]. - **์ง์ ‘์ ์ธ DOM ์กฐ์ž‘์˜ ํ•œ๊ณ„ (Limitations of Direct DOM Manipulation)** ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ์„ ํ†ตํ•ด DOM์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ ˆ์ด์•„์›ƒ(Reflow)๊ณผ ํŽ˜์ธํŠธ ๋‹จ๊ณ„๋ฅผ ์ง€์†์ ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณธ์งˆ์ ์œผ๋กœ ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค [10]. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณต์žกํ•ด์งˆ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ค‘๋ณต ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋Š” React์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฐ€์ƒ DOM(Virtual DOM)์„ ๋„์ž…ํ•˜๊ฒŒ ๋œ ํ•ต์‹ฌ ๋ฐฐ๊ฒฝ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [10]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[CSSOM(CSS Object Model)|CSSOM(CSS Object Model)]], [[Critical Rendering Path (CRP)|Critical Rendering Path(CRP)]], [[Render Tree|Render Tree]], [[Virtual DOM|Virtual DOM]], [[Reflow & Repaint|Reflow / Repaint]] - **Projects/Contexts:** ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • (Browser Rendering Process), ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ React์˜ Virtual DOM ๋„์ž… ๋ฐฐ๊ฒฝ ์ดํ•ด [7, 10, 11] - **Contradictions/Notes:** ์†Œ์Šค ๊ฐ„์˜ ๋ชจ์ˆœ๋œ ์ •๋ณด๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ DOM์˜ ์ƒ์„ฑ์€ ์ ์ง„์ (incremental)์œผ๋กœ ์ง„ํ–‰๋˜์–ด ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ๋™์•ˆ์—๋„ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, CSSOM์˜ ์ƒ์„ฑ์€ ๋ Œ๋”๋ง์„ ์ฐจ๋‹จ(render-blocking)ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋‘ ๋ชจ๋ธ์˜ ๊ตฌ์ถ• ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค [3, 9]. --- *Last updated: 2026-04-25*