๐Ÿ–ฅ๏ธ ์›นํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง

์ˆ˜๋ฏผยท2023๋…„ 2์›” 21์ผ

๐Ÿ“์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์กฐ

  • User Interface(์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค)
    : ์ฃผ์†Œํ‘œ์‹œ์ค„, ์ด์ „/๋‹ค์Œ ์ƒˆ๋กœ๊ณ ์นจ ๋“ฑ ์›นํŽ˜์ด์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ  ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
  • Rendering Engine
    :HTML ๊ณผ CSS๋ฅผ ํŒŒ์‹ฑ ํ•˜์—ฌ ์š”์ฒญํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ Œ๋”๋ง ์—”์ง„
  • Browser Engine
    : ์œ ์ €์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ Œ๋”๋ง ์—”์ง„์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์—”์ง„
  • Networking
    : ๊ฐ์ข… ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„คํŠธ์›Œํ‚นํŒŒํŠธ
  • UI Backend
    : ์ฒดํฌ๋ฐ•์Šค๋‚˜ ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์œ„์ ฏ์„ ๊ทธ๋ ค์คŒ
  • Data Persistence
    : localStorage๋‚˜ Cookie์™€ ๊ฐ™์ด ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”ํŒŒํŠธ
  • JavaScript Interpreter
    : JavaScript๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ

โ—๏ธParsing(ํŒŒ์‹ฑ)์ด๋ž€?
HTML ํŒŒ์ผ์„ ํ•ด์„ํ•˜์—ฌ DOM(Document Object Model) Tree๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.


๐Ÿ“ Rendering Engine

- ์›น ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ๋ Œ๋”๋ง ์—”์ง„์ด ๋‹ค๋ฅด๋‹ค!

safari -> Webkit
Firefox -> Gecko
Chrome -> Blink

๐Ÿ’ก ๋ Œ๋”๋ง ์—”์ง„์˜ ๋ชฉํ‘œ

1) HTML, CSS, JS, ์ด๋ฏธ์ง€ ๋“ฑ ์›นํŽ˜์ด์ง€์— ํฌํ•จ๋œ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ํ™”๋ฉด์— ๋ณด์—ฌ์ค€๋‹ค.

2) ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋ง์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๐Ÿ’ก ๋ Œ๋”๋ง ์—”์ง„์˜ ๋™์ž‘ ๊ณผ์ •

Critical Rendering Path

1. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML, CSS, JS, ์ด๋ฏธ์ง€, ํฐํŠธ ๋“ฑ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ , ์‘๋‹ต์œผ๋กœ ๋ฐ›์•„์˜จ๋‹ค.
2. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์—”์ง„์€ ๋ฐ›์•„์˜จ HTML, CSS๋ฅผ ํŒŒ์‹ฑํ•ด DOM, CSSOM์„ ์ƒ์„ฑํ•˜๊ณ , ์ด๋“ค์„ ๊ฒฐํ•ฉํ•ด ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
3. ๋ธŒ๋ผ์šฐ์ € JS ์—”์ง„์€ ๋ฐ›์•„์˜จ JS๋ฅผ ํŒŒ์‹ฑํ•ด AST๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด ์‹คํ–‰ํ•œ๋‹ค.
4. ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ(์œ„์น˜, ํฌ๊ธฐ)์„ ๊ณ„์‚ฐํ•œ๋‹ค.
5. ํ™”๋ฉด์— HTML์š”์†Œ๋ฅผ ํŽ˜์ธํŒ…ํ•œ๋‹ค.

1. ์š”์ฒญ๊ณผ ์‘๋‹ต

: ๋ธŒ๋ผ์šฐ์ €๋Š” ์šฐ์„  ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค(HTML, CSS, JS, ์ด๋ฏธ์ง€, ํฐํŠธ..)๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ , ์‘๋‹ต์œผ๋กœ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค.

2.HTML ํŒŒ์‹ฑ, DOM์ƒ์„ฑ

: ์‘๋‹ต์œผ๋กœ ๋ฐ›์•„์˜จ HTML ๋ฌธ์„œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•œ๋ฐ, ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ํ˜•ํƒœ๊ฐ€ ๋ฐ”๋กœ DOM ๊ตฌ์กฐ์ด๋‹ค.

HTML ๋ฌธ์„œ๋ฅผ DOMํ˜•ํƒœ๋กœ ํŒŒ์‹ฑํ•˜๊ธฐ ์œ„ํ•ด์„  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค.

  1. ๋ฐ”์ดํŠธ(Bytes) : ์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ 2์ง„์ˆ˜ ํ˜•ํƒœ์˜ HTML ๋ฌธ์„œ๋ฅผ ์‘๋‹ต์œผ๋กœ ์ค€๋‹ค.
  1. ๋ฌธ์ž์—ด(Characters) : ๋ฌธ์„œ๋Š” ์˜ charset ์†์„ฑ์— ์ง€์ •๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉ ๋œ๋‹ค.(ex. UTF-8) ์„œ๋ฒ„๋Š” ์ด ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์€ ์‘๋‹ต ํ—ค๋”์— ๋‹ด์•„์ค€๋‹ค.
  1. ํ† ํฐ(Tokens) : ๋ฌธ์ž์—ด ํ˜•ํƒœ์˜ HTML๋ฌธ์„œ๋ฅผ 'ํ† ํฐ'๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•œ๋‹ค. (๋ฌธ๋ฒ•์  ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์ฝ”๋“œ์˜ ์ตœ์†Œ ๋‹จ์œ„)
  1. ๋…ธ๋“œ(Nodes) : ๊ฐ ํ† ํฐ์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด, ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (DOM์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์š”์†Œ)
  1. DOM : HTML๋ฌธ์„œ์˜ ์š”์†Œ๋“ค์˜ ์ค‘์ฒฉ๊ด€๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋…ธ๋“œ๋“ค์„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค. ์ด ํŠธ๋ฆฌ๋ฅผ DOM์ด๋ผ๊ณ  ํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ HTML ๋ฌธ์„œ๊ฐ€ ํŒŒ์‹ฑ๋˜๊ณ , DOM ์ด๋ผ๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” Javascript ์–ธ์–ด๋งŒ ์•Œ์•„๋“ฃ๋Š”๋ฐ, Javascript๋Š” HTML์˜ ํƒœ๊ทธ๋‚˜ ์†์„ฑ๋“ค์„ ๋ฐ”๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ธ '๊ฐ์ฒด'๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ๋ธŒ๋ผ์šฐ์ €๋„ HTML ๋ฌธ์„œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

CSSํŒŒ์ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŒŒ์‹ฑ๊ณผ์ •์„ ๊ฒช๊ณ  CSSOM Tree๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

์œ„๊ณผ์ •์„ ๊ฒช์–ด DOM๊ณผ CSSOM์ด ์ƒ์„ฑ๋˜๊ณ  ๋‚œํ›„ ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

๋ Œ๋”ํŠธ๋ฆฌ๋ž€ ๋ง๊ทธ๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ๋ Œ๋”๋ง ๋˜๊ธฐ์œ„ํ•œ ํŠธ๋ฆฌ๋กœ DOM๊ณผ CSSOM์„ ํ•ฉ์ณ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„๋งŒ ํฌํ•จ์‹œํ‚จ ํŠธ๋ฆฌ์ด๋‹ค.

3. JavaScript Parsing

:๋ Œ๋”๋ง ์—”์ง„์€ HTML ํŒŒ์ผ์„ ํ•œ์ค„์”ฉ ํŒŒ์‹ฑํ•˜๋ฉฐ DOM์„ ์ƒ์„ฑํ•˜๋‹ค๊ฐ€ Javascript ์ฝ”๋“œ๋“ค ๋ถˆ๋Ÿฌ์˜ค๋Š” ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚  ๋•Œ๋„ ํŒŒ์‹ฑ์„ ์ž ์‹œ ๋ฉˆ์ถ˜๋‹ค. ๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ src ์†์„ฑ์— ์ ํ˜€์žˆ๋Š” ํŒŒ์ผ์„ ์„œ๋ฒ„์— ์š”์ฒญํ•ด ๋ฐ›์•„์˜จ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฐ›์•„์˜จ jsํŒŒ์ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŒŒ์‹ฑ์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, ์ด ํŒŒ์‹ฑ์€ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์—”์ง„์ด ์ง์ ‘ํ•˜์ง€ ์•Š๊ณ , Javascript ์—”์ง„์ด ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ ๋ Œ๋”๋ง ์—”์ง„์€ JS์—”์ง„์—๊ฒŒ ์ œ์–ด๊ถŒ์„ ์•„์˜ˆ ๋„˜๊ฒจ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, HTML ํŒŒ์‹ฑ์„ ๋ฉˆ์ท„๋‹ค๊ฐ€ jsํŒŒ์‹ฑ์ด ๋‹ค๋˜๋ฉด ๋‹ค์‹œ ์ œ์–ด๊ถŒ์„ ๋Œ๋ ค๋ฐ›์•„ ํŒŒ์‹ฑ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

JS์—”์ง„์€ jsํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์‚ดํŽด๋ณด๋ฉด, ๋จผ์ € ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์ธ ์ฝ”๋“œ๋ฅผ ํ† ํฐ ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ถ„ํ•ด๋œ ํ† ํฐ์— ๋ฌธ๋ฒ•์ ์ธ ์˜๋ฏธ์™€ ๊ตฌ์กฐ๊ฐ€ ๋”ํ•ด์ ธ, AST(์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ) ๋ผ๋Š” ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ๋œ๋‹ค.

4. ๋ ˆ์ด์•„์›ƒ(๋ฆฌํ”Œ๋กœ์šฐ)

: ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ(์œ„์น˜, ํฌ๊ธฐ)์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ ์š”์†Œ๋“ค์ด ์ „์ฒด ํ™”๋ฉด์—์„œ ์–ด๋””์—, ์–ด๋–ค ํฌ๊ธฐ๋กœ ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•  ์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋ Œ๋”ํŠธ๋ฆฌ์˜ ๋งจ ์œ—๋ถ€๋ถ„๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๋ฉฐ ๊ณ„์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค. ๋ชจ๋“  ๊ฐ’๋“ค์€ ์ ˆ๋Œ€์ ์ธ ๋‹จ์œ„์ธ px๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

5. ํŽ˜์ธํŒ…

: ํ™”๋ฉด์— HTML์š”์†Œ๋ฅผ ํŽ˜์ธํŒ…ํ•œ๋‹ค.

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

  • ๋ฆฌํ”Œ๋กœ์šฐ, ๋ฆฌํŽ˜์ธํŠธ
    ๋ฆฌํ”Œ๋กœ์šฐ = ๋ ˆ์ด์•„์›ƒ ๊ณ„์‚ฐ์„ ๋‹ค์‹œํ•˜๋Š” ๊ฒƒ
    ๋ฆฌํŽ˜์ธํŠธ = ์ƒˆ๋กœ์šด ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์‹œ ํŽ˜์ธํŠธ๋ฅผ ํ•˜๋Š” ๊ฒƒ

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

DOM ์กฐ์ž‘์€ ๋ฆฌํ”Œ๋กœ์šฐ, ๋ฆฌํŽ˜์ธํŒ…์ด ์ผ์–ด๋‚˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ 
https://joooing.tistory.com/entry/rendering

profile
react ํŒŒ๋จน๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€