JSX&VartualDom

๊น€ํ•˜์€ยท2023๋…„ 1์›” 17์ผ
0
post-custom-banner

๐Ÿ’กย JSX๋ž€ ??
โ†’ JavaScrip Xml์˜ ์•ฝ์ž๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ ๋ฌธ๋ฒ•.
๋ฆฌ์•กํŠธ์—์„œ๋Š” virtual DOM์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— html์„ ๊ฐ€์žฅํ•œ JSX๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค
JSX๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ๋ฐ”๋€Œ๊ฒŒ๋œ๋‹ค.
๋ฆฌ์•กํŠธ์—์„œ์˜ html.

virtual Dom?

Virtual DOM (VDOM)์€ UI์˜ ์ด์ƒ์ ์ธ ๋˜๋Š” โ€œ๊ฐ€์ƒโ€์ ์ธ ํ‘œํ˜„์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ReactDOM๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ•ด โ€œ์‹ค์ œโ€ DOM๊ณผ ๋™๊ธฐํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋… -- ์ถœ์ฒ˜ react docs

๋ฌด์Šจ๋ง์ธ์ง€ ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š์•„ ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค.

DOM์— ๋ณ€ํ™”์ƒ๊ธฐ๋ฉด, ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๊ณ  (๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ์š”์†Œ๋“ค์˜ ์Šคํƒ€์ผ์ด ๋‹ค์‹œ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค) ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค๊ณ  ํŽ˜์ธํŒ…์„ ํ•˜๋Š” ๊ณผ์ •์ด ๋‹ค์‹œ ๋ฐ˜๋ณต๋˜๋Š”๊ฑฐ์ฃ .

๋ณต์žกํ•œ SPA(์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜) ์—์„œ๋Š” DOM ์กฐ์ž‘์ด ๋งŽ์ด ๋ฐœ์ƒํ•ด์š”. ๊ทธ ๋œป์€ ๊ทธ ๋ณ€ํ™”๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋งŽ์ด ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•œ๋‹จ ์†Œ๋ฆฌ๊ณ , ์ „์ฒด์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ž, ์ด ์ด๋ถ€๋ถ„์—์„œ Virtual DOM ์ด ๋น›์„ ๋ฐœํ•ฉ๋‹ˆ๋‹ค! ๋งŒ์•ฝ์— ๋ทฐ์— ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ๋ณ€ํ™”๋Š” ์‹ค์ œ DOM ์— ์ ์šฉ๋˜๊ธฐ์ „์— ๊ฐ€์ƒ์˜ DOM ์— ๋จผ์ € ์ ์šฉ์‹œํ‚ค๊ณ  ๊ทธ ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ DOM ์œผ๋กœ ์ „๋‹ฌํ•ด์ค๋‹ˆ๋‹ค. ์ด๋กœ์จ, ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—ฐ์‚ฐ์˜ ์–‘์„ ์ค„์ด๋ฉด์„œ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜๋Š” ๊ฒƒ ์ด์ง€์š”.
์ถœ์ฒ˜: https://velopert.com/3236

๋จผ์ € ํ•ด๋‹น ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ๋จผ์ € ๋ธŒ๋ผ์šฐ์ €์˜ ์ž‘๋™๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์˜€๋‹ค.

๋ธŒ๋ผ์šฐ์ €์—์„œ HTML์„ ์ „๋‹ฌ๋ฐ›์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”์—”์ง„์ด ์ด๋ฅผ ๋ถ„์„(ํŒŒ์‹ฑ)ํ•˜๊ณ  DOMํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  CSSํŒŒ์ผ๊ณผ ์—˜๋ฆฌ๋จผํŠธ์˜ inline์Šคํƒ€์ผ์„ ํŒŒ์‹ฑํ•ด ๊ทธ ์ •๋ณด์—๋”ฐ๋ผ ์ƒˆ๋กœ์šด ๋žœ๋”ํŠธ๋ฆฌ ๋ผ๋Š”๊ฒƒ์„ ๋งŒ๋“ค๊ณ , ์ด ๊ณผ์ •์—์„œ ๊ฐ ์š”์†Œ์˜ ์Šคํƒ€์ผ์ด ๊ณ„์‚ฐ๋˜๋ฉด์„œ ์ด ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์˜ ์Šคํƒ€์ผ ์†์„ฑ์„ ์ฐธ์กฐํ•œ๋‹ค.

๋ Œ๋”ํŠธ๋ฆฌ๊ฐ€ ๋‹ค ๋งŒ๋“ค์–ด์ง€๊ณ ๋‚˜๋ฉด ๋ ˆ์ด์•„์›ƒ(reflow๋ผ๊ณ ๋„ ํ•จ)๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ๊ฐ ์Šคํฌ๋ฆฐ ์ขŒํ‘œ๊ฐ€ ๊ทธ๋ ค์ง€๊ณ  ์–ด๋””์— ๊ทธ๋ ค์ ธ์•ผํ•˜๋Š”์ง€ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

๊ทธ ๋‹ค์Œ ์ƒ‰์„ ์ž…ํžˆ๋Š” painting๊ณผ์ •์ด ์ผ์–ด๋‚˜๋Š”๋ฐ, ์ด๋•Œ DOM๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋ฉด์„œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค๊ณ  ํŽ˜์ธํŒ…ํ•˜๋Š”๊ณผ์ •์ด ๋‹ค์‹œ ์ผ์–ด๋‚œ๋‹ค.

Virtual DOM์€, ๋ทฐ์— ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋ฉด ์‹ค์ œ DOM์— ์ ์šฉ๋˜๊ธฐ ์ „์— ๊ฐ€์ƒ์˜ DOM์— ๋จผ์ € ์ ์šฉ์‹œํ‚ค๊ณ , ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ DOM์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๊ธฐ์— ๋ธŒ๋ผ์šฐ์ €์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด๊ณผ ์–ด๋–ค๊ฒŒ ๋ฐ”๋€Œ์—ˆ๊ณ , ์–ด๋–ค๊ฒŒ ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋Š”์ง€ ์ž๋™ํ™”ํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ํŒŒ์•…ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋˜ํ•œ ์žฅ์ .
(๊ฐ ๋ณ€ํ™”๋“ค์˜ ๋™๊ธฐํ™” ์ž‘์—…์„ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฉด์„œ ๋ชจ๋“  ์ž‘์—…์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.)

์ •๋ฆฌ: JSX๋Š” ๋ฆฌ์—‘ํŠธ ์ „์šฉ HTML์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ.
virtual DOM: DOM์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๋‚˜ํƒ€๋‚ธ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋งŒ๋“ค์–ด ๋†“๋Š”๊ฒƒ์„ ์˜๋ฏธ,

์ด ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ์›นํŽ˜์ด์ง€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Œ. DOM ๋ฐ˜๋ณต ์กฐ์ž‘์— ์˜ํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๋ฌธ์ œ๋“ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ๊ธฐ์ˆ .

post-custom-banner

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