๊ฐœ๋ฐœ ์‹œ๋‚˜๋ธŒ๋กœ

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง

youngdeok 2023. 5. 13. 16:18

์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์‹œ๋กœ ๋“œ๋‚˜๋“œ๋Š” ์›นํŽ˜์ด์ง€๋Š” ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘์„ ํ• ๊นŒ์š”?.

์‚ฌ์‹ค ์›นํŽ˜์ด์ง€๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์„ ์›น ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •์ด๋ผ๊ณ  ๋งํ•˜๊ตฌ์š”.

 

๊ทธ๋ฆผ์œผ๋กœ ์ •๋ฆฌํ•œ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์ธํ„ฐ๋„ท ์›น ๋ธŒ๋ผ์šฐ์ €๋“ค์„ ๋ถ„ํ•ดํ•ด ๋ณด๋ฉด, ๊ทธ ์–ธ์—๋Š” ๋‘๊ฐœ์˜ ์—”์ง„์ด ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜๋Š” ๋ Œ๋”๋ง ์—”์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ํ™”๋ฉด์„ ๊ทธ๋ ค๋‚ด์ฃ . ๋‹ค์Œ์€ jsEngine์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋‚ด ๊ธฐ๋Šฅ์„ ๋™์ž‘ํ•˜๋Š” ์—ญํ™œ์„ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์œ„์˜ ๊ทธ๋ฆผ์„ ์ˆœ์„œ๋Œ€๋กœ ๊ทธ๋ ค๋‚ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›๋Š”๋‹ค.
    1. ์ฃผ์†Œ์ฐฝ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ์‚ฌํ•ญ๋“ค์„ ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    2. ์š”์ฒญ์˜ ์‘๋‹ต์œผ๋กœ๋Š” HTML, CSS, JS ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„์€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋œ HTML, CSS ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM๊ณผ CSSOM์„ ์ƒ์„ฑ ๊ฒฐํ•ฉ ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ €์˜ JS Engine์€ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์‘๋‹ต๋œ JS๋ฅผ ํŒŒ์‹ฑ Tree๋ฅผ ์ƒ์„ฑ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰๋˜๋ฉฐ JS ๋ฅผ ํ†ตํ•ด DOM, CSSOM๋“ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  4. ๊ณ„์‚ฐ → paint

1๋ฒˆ์˜ ๊ฒฝ์šฐ ajax๋‚˜ restful์˜ ๊ฐœ๋…์ด ๋“ค์–ด๊ฐ€๋‹ˆ ๋‹ค์Œ์— ์ •๋ฆฌ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ์ฃผ์†Œ์ฐฝ์— ์›ํ•˜๋Š” ์ •๋ณด๋“ค์„ ๋‹ด์•„ ์š”์ฒญํ•˜๊ณ  ์‘๋‹ต ๋ฐ›๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

HTML ํŒŒ์‹ฑ๊ณผ DOM ์ƒ์„ฑ

๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ์— ์˜ํ•ด ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•œ HTML ๋ฌธ์„œ๋Š” ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆœ์ˆœํ•œ ํ…์ŠคํŠธ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ™˜์„ ํ•ด์ค˜์•ผ ํ•˜๊ฒ ์ฃ ??

<!DOCTYPE html>
<html lang="ko-KR">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>
<body>
    <ul>
      <li>Lorem ipsum dolor sit amet consectetur adipisicing elit.
      </li>
			<li>Lorem ipsum dolor sit amet consectetur adipisicing elit.
      </li>
			<li>Lorem ipsum dolor sit amet consectetur adipisicing elit.
      </li>
    </ul>
</body>
</html>

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ html ํŒŒ์ผ์ด ์‘๋‹ต์œผ๋กœ ์™”๋‹ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„์€ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ํ†ตํ•ด ์‘๋‹ต๋ฐ›์€ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ธ DOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

CSS ํŒŒ์‹ฑ๊ณผ CSSOM ์ƒ์„ฑ

์ž ์ด์ œ HTML ํŒŒ์‹ฑ์€ ๋๋‚ฌ๊ณ  css์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ๊ฒ ์ฃ ???

css๋„ HTML๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • HTML์— ๋Œ€ํ•œ ํŒŒ์‹ฑ์„ ์ง„ํ–‰ ํ•˜๋‹ค๊ฐ€ link tag๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„์— cssํŒŒ์ผ์„ ์š”์ฒญํ•˜๊ณ  ํŒŒ์‹ฑ์„ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ดํ›„ HTML๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์—ฌ CSSOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ CSS ํŒŒ์‹ฑ์„ ์™„๋ฃŒํ•˜๋ฉด ์ค‘๋‹จ๋œ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ HTML์„ ํŒŒ์‹ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ DOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
<link rel="stylesheet" href="style.css">
body {
	font-size: 18px
}
ul {
	list-style-type: none;
}

style.css

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ css ํŒŒ์ผ์ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •์„ ํ•ด๋ด…์‹œ๋‹ค!.

์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ cssํŒŒ์ผ์ด ์‘๋‹ต๋˜๋ฉด ๋ Œ๋”๋ง ์—”์ง„์€ HTML๊ณผ ๋™์ผํ•œ ํ•ด์„๊ณผ์ •(๋ฐ”์ดํŠธ → ๋ฌธ์ž → ํ† ํฐ → ๋…ธ๋“œ → CSSSOM)์„ ๊ฑฐ์ณ css๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ CSSOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Render Tree ์ƒ์„ฑ

์ž ์œ„์—์„œ ์šฐ๋ฆฌ๋Š” HTML๊ณผ CSS๋ฅผ ํŒŒ์‹ฑํ•ด์„œ ๊ฐ๊ฐ DOM, CSSOM์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋‘˜์€ ๋ Œ๋”๋ง์„ ์œ„ํ•ด ๋ Œ๋” ํŠธ๋ฆฌ๋กœ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

 

 

์ดํ›„ ์™„์„ฑ๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋Š” ๊ฐ HTML์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ํ”ฝ์…€์„ ๋ Œ๋”๋ง ํ•˜๋Š” ํŽ˜์ธํŒ… ์ฒ˜๋ฆฌ์— ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์‹ฑ๊ณผ ์‹คํ–‰

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์‹ฑ๊ณผ ์‹คํ–‰์€ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง์—”์ง„์ด ์•„๋‹Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ CPU๊ฐ€ ์ดํ•ดํ•ญ ์ˆ˜ ์žˆ๋Š” ์ €์ˆ˜์ค€ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์—ญํ™œ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ Œ๋”๋ง ์—”์ง„์œผ๋กœ ๋ถ€ํ„ฐ ์ œ์–ด๊ถŒ์„ ๋„˜๊ฒจ ๋ฐ›์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•ด์„ํ•˜์—ฌ Abstract Syntax Trr(์ถ”์ƒ๊ตฌ๋ฌธ ํŠธ๋ฆฌ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹œ๋ฉด์„œ ๊ธ€์„ ์ฝ์–ด ๋ณด๋ฉด ์ข€๋” ์ดํ•ดํ•˜๋Š”๋ฐ ์ˆ˜์›” ํ•  ๊ฒ๋‹ˆ๋‹ค.

๋ฆฌํ”Œ๋กœ์šฐ์™€ ๋ฆฌํŽ˜์ธํŠธ

๋งŒ์•ฝ jscode์—์„œ DOM์ด๋‚˜ CSSOM์„ ๋ณ€๊ฒฝํ•˜๋Š” DOM api๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋œ DOM์ด๋‚˜ CSSOM์€ ๋‹ค์‹œ ๋ Œ๋”ํŠธ๋ฆฌ๋กœ ๊ฒฐํ•ฉ๋˜๊ณ 

๋ณ€๊ฒฝ๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์•„์›ƒ๊ณผ ํŽ˜์ธํŠธ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋ธŒ๋ผ์šฐ์ €์˜ ํ™”๋ฉด์— ๋‹ค์‹œ ๋ Œ๋”๋ง ํ•˜๋Š”๋ฐ,

์ด๊ฒƒ์„ ๋ฆฌํ”Œ๋กœ์šฐ , ๋ฆฌํŽ˜์ธํŠธ๋ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ „ ์„ธ๊ณ„์˜ ์ธํ„ฐ๋„ท์˜ ํ‰๊ท  ์†๊ณ ๋Š” 30Mbps๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์œ„์—์„œ ์„ค๋ช…ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ๊ฐ ํ”„๋กœ์„ธ์Šค ๋ณ„๋กœ ์‹œ๊ฐ„์„ ํ•˜๊ธฐ์œ„ํ•ด ๊ฒฝ๋Ÿ‰ํ™”๋Š” ํ•„์ˆ˜ ์ž…๋‹ˆ๋‹ค.

 

์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง์ด๋ž€? | ์š”์ฆ˜IT