Rendering

TL;DR

  1. HTML์„ ํŒŒ์‹ฑํ•ด DOM ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ(DOM) ์ƒ์„ฑ

  2. CSS๋ฅผ ํŒŒ์‹ฑํ•ด CSS ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ(CSSOM) ์ƒ์„ฑ

  3. DOM๊ณผ CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ Œ๋” ํŠธ๋ฆฌ ์ƒ์„ฑ

  4. ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์•„์›ƒ/๋ฆฌํ”Œ๋กœ์šฐ ๊ณผ์ • ์‹คํ–‰

  5. ๊ฐ ๋…ธ๋“œ๋ฅผ ํ™”๋ฉด์— ํŽ˜์ธํŒ…

DOM ์ƒ์„ฑ

๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„์ด ๊ฐ€์žฅ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์€ Document Object Model, DOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. HTML ํŒŒ์ผ์„ DOM ํŠธ๋ฆฌ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ๊ณผ์ •์€ ์ด 4๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  1. ๋ฐ”์ดํŠธ ์ธ์ฝ”๋”ฉ: ๋””์Šคํฌ ๋˜๋Š” ๋„คํŠธ์›Œํฌ์—์„œ HTML์˜ ์›์‹œ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ๊ณ , ํŒŒ์ผ์— ์ง€์ •๋œ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹(ex. UTF-8)์— ๋”ฐ๋ผ ๋ณ€ํ™˜ํ•œ๋‹ค.

  2. ํ† ํฐํ™”: ๋ณ€ํ™˜๋œ ๋ฌธ์ž์—ด์„ HTML5 ํ‘œ์ค€์— ๋”ฐ๋ผ ๊ณ ์œ ํ•œ ํ† ํฐ(ex. <html>, <head>)์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  3. ๊ฐ์ฒดํ™”: ๊ฐ ํ† ํฐ์„ ์†์„ฑ์ด ์ •์˜๋œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  4. DOM ๊ตฌ์„ฑ: ์›๋ณธ ๋งˆํฌ์—…์˜ ํฌํ•จ ๊ด€๊ณ„ ๋“ฑ์„ ๊ณ ๋ คํ•ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ž˜๋ชป ์ž‘์„ฑ๋œ HTML

<body>
<p>Front-end Developer
<span>Zero

์œ„์˜ ์ฝ”๋“œ๋Š” HTML ํŒŒ์ผ์˜ ์‹œ์ž‘ ์ง€์ ์ธ <html> ํƒœ๊ทธ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•˜๊ณ , ๋‹ซ๋Š” ํƒœ๊ทธ(</body>, </p>)๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ด๋Š” ๋ฌธ๋ฒ•์ ์œผ๋กœ ํ‹€๋ฆฐ ์ฝ”๋“œ์ด์ง€๋งŒ, HTML ํŒŒ์„œ๋Š” ์ž๋™์œผ๋กœ ๋ฌธ๋ฒ•์— ๋งž๊ฒŒ ๋งˆํฌ์—…์„ ์ˆ˜์ •ํ•œ๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ์˜ ๋ชจ์Šต์ด๋‹ค.

<html>
  <head></head>
  <body>
    <p>
      Front-end Developer <span>Zero</span>
    </p>
  </body>
</html>

์™ธ๋ถ€ ์ž์›

HTML ํŒŒ์„œ๋Š” ์ด๋ฏธ์ง€, CSS ๋“ฑ์˜ ๋…ผ๋ธ”๋กœํ‚น ์ž์›์„ ๋ฐœ๊ฒฌํ•˜๋ฉด, ํ•ด๋‹น ์ž์›์„ ์š”์ฒญํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„์„ ๊ณ„์†ํ•œ๋‹ค. ํ•˜์ง€๋งŒ <script> ํƒœ๊ทธ์˜ ๊ฒฝ์šฐ, async๋‚˜ defer ์†์„ฑ์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ตฌ๋ฌธ ๋ถ„์„์„ ๋ฉˆ์ถ”๊ณ  ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•ด์„ํ•œ๋‹ค. ํ•ด์„์ด ๋๋‚œ ์ดํ›„์— ๋‹ค์‹œ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ง„ํ–‰ํ•œ๋‹ค.

CSSOM ์ƒ์„ฑ

HTML ํŒŒ์‹ฑ ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌํ•œ CSS ๋˜ํ•œ HTML๊ณผ ์œ ์‚ฌํ•œ ํŒŒ์‹ฑ ๊ณผ์ •์„ ๊ฑฐ์ณ CSSOM(CSS Object Model)์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด ์ž‘์—…์€ DOM์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

์žฌ๊ท€

CSSOM ์ƒ์„ฑ ๊ณผ์ •์—์„œ๋Š”, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” User Agent Stylesheet์˜ ๋‚ด์šฉ๊ณผ CSS ํŒŒ์ผ์˜ ์Šคํƒ€์ผ์„ ํฌํ•จํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ๋œ ์Šคํƒ€์ผ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ ์šฉ๋œ ์Šคํƒ€์ผ๊นŒ์ง€ ์žฌ๊ท€์ ์œผ๋กœ ํŠธ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๊ตฌ์„ฑํ•œ๋‹ค.

๋ Œ๋” ํŠธ๋ฆฌ ์ƒ์„ฑ

๋ Œ๋”๋ง ์—”์ง„์€ DOM ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„์—, DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ํ•ฉ์ณ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋ Œ๋”๋ง ํŠธ๋ฆฌ ๊ตฌ์„ฑ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. DOM ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์—์„œ๋ถ€ํ„ฐ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•œ๋‹ค.

  2. ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ๋ฅผ ์ƒ๋žตํ•œ๋‹ค. (ex. display: none, <script>, <meta>, ...)

  3. ์ฝ˜ํ…์ธ ์™€ ์บ์Šค์ผ€์ด๋“œ ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ ์Šคํƒ€์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ๋ฅผ ์ƒ๋žตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, DOM ํŠธ๋ฆฌ์™€ ๋ Œ๋” ํŠธ๋ฆฌ๋Š” 1:1์œผ๋กœ ๋งค์นญ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

๋ ˆ์ด์•„์›ƒ & ๋ฆฌํ”Œ๋กœ์šฐ

๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ ๋…ธ๋“œ์˜ ์Šคํƒ€์ผ์„ ๊ณ„์‚ฐํ•˜์˜€์ง€๋งŒ, ์‹ค์ œ ๋””๋ฐ”์ด์Šค์˜ ๋ทฐํฌํŠธ ๋‚ด์—์„œ์˜ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜์ง€๋Š” ์•Š์•˜๋‹ค. ์ด ๊ณผ์ •์„ ๋ ˆ์ด์•„์›ƒ ๋˜๋Š” ๋ฆฌํ”Œ๋กœ์šฐ๋ผ ์นญํ•œ๋‹ค.

์ „์—ญ/์ฆ๋ถ„ ๋ ˆ์ด์•„์›ƒ

๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋“ฑ์˜ ์ „์—ญ์  ์Šคํƒ€์ผ ๋ณ€๊ฒฝ, ๋ทฐํฌํŠธ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ๋‹ค์‹œ ์ˆœํšŒํ•˜๋ฉฐ ์ „์—ญ ๋ ˆ์ด์•„์›ƒ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ๊ทธ ์™ธ์— ์Šคํƒ€์ผ์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฆ๋ถ„ ๋ ˆ์ด์•„์›ƒ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ฆ๋ถ„ ๋ ˆ์ด์•„์›ƒ์€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ์— ํ•œํ•ด ์‹คํ–‰๋œ๋‹ค.

ํŽ˜์ธํŒ…

ํŽ˜์ธํŒ… ๋‹จ๊ณ„์—์„œ๋Š”, ๋ Œ๋” ํŠธ๋ฆฌ์˜ ๋ ˆ์ด์•„์›ƒ ๊ณผ์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋…ธ๋“œ๋ฅผ ํ™”๋ฉด์— ์‹ค์ œ๋กœ ํ‘œ์ถœํ•œ๋‹ค. ๋ ˆ์ด์•„์›ƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŽ˜์ธํŒ… ๊ณผ์ •์—๋„ ์ „์—ญ/์ฆ๋ถ„ ํŽ˜์ธํŒ…์ด ์กด์žฌํ•œ๋‹ค. ์ฆ๋ถ„ ํŽ˜์ธํŒ…์—์„œ๋Š” ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ์— ํ•œํ•ด ํŽ˜์ธํŒ… ๊ณผ์ •์„ ์žฌ์‹คํ–‰ํ•œ๋‹ค.

๋ฆฌ๋ Œ๋”๋ง

๋ Œ๋”๋ง ์—”์ง„์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”๊ตฌํ•œ๋‹ค. ํŠนํžˆ ๋ ˆ์ด์•„์›ƒ๊ณผ ํŽ˜์ธํŒ… ๊ณผ์ •์˜ ๊ฒฝ์šฐ, ์ž์ฃผ ์ˆ˜ํ–‰๋  ์‹œ ์„ฑ๋Šฅ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

DOM์„ ์ง์ ‘์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ, ์žฆ์€ ๋ฆฌ๋ Œ๋”๋ง์„ ์ดˆ๋ž˜ํ•˜๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, for๋ฌธ์„ ์ˆœํšŒํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ˆœํšŒํ•œ ํšŸ์ˆ˜๋งŒํผ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฐœ์ƒ๋œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด React, Vue์™€ ๊ฐ™์€ ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ€์ƒ DOM์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ•œ๋‹ค. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ€์ƒ DOM์— ๋ฐ˜์˜ํ•˜๊ณ , DOM๊ณผ ๋น„๊ตํ•˜์—ฌ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ DOM์— ๋ฐ˜์˜ํ•œ๋‹ค.

์ฐธ๊ณ  ๋ฌธ์„œ

Last updated