Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/React

[React] ๋ฆฌ์•กํŠธ์™€ ๊ฐ€์ƒ๋”(virtualDOM) / ํ„ฐ๋ฏธ๋„ ์ดˆ๊ธฐ ์„ค์ •

by soonybutter 2025. 3. 23.
728x90

 

 
๋ชฉ์ฐจ
1. ๋ฆฌ์•กํŠธ(React)
2. ๋ฆฌ์•กํŠธ ์‚ฌ์šฉ์ด์œ ์™€ VitrualDOM(๊ฐ€์ƒ๋”)
3. terminal์—์„œ  ์ดˆ๊ธฐ ์„ค์ •ํ•˜๊ธฐ
 


 
 

1.  ๋ฆฌ์•กํŠธ(React)

 
 
"์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ"
๋ฆฌ์•กํŠธ๋ž€ ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
 
 
 
 
"SPA(Single Page Application)"
SPA๋Š” ์ˆ˜๋งŽ์€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•˜๋ฉฐ,
ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ธ๋‹ค.
๋”ฐ๋ผ์„œ ํŽ˜์ด์ง€๊ฐ€ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ „ํ™˜๋˜๋„๋ก ํ•˜๊ณ , ์—…๋ฐ์ดํŠธ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚จ๋‹ค.

 
 
 
"ft. Meta"
Meta๊ฐ€ ๋งŒ๋“  ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
๋“ ๋“ ํ•œ ์ง€์›๊ตฐ์ธ Meta๋•์— ์›น ๊ฐœ๋ฐœ ์‹œ์žฅ์—์„œ ์‰ฝ๊ฒŒ ๋ฌด๋„ˆ์งˆ ์ผ์€ ์—†๋‹ค๋Š” ๊ฒƒ,! 
https://github.com/facebook/react

GitHub - facebook/react: The library for web and native user interfaces.

The library for web and native user interfaces. Contribute to facebook/react development by creating an account on GitHub.

github.com

 
 
 
 


 
 

2.  ๋ฆฌ์•กํŠธ ์žฅ์  & VirtualDOM(๊ฐ€์ƒ๋”)

 
๋ฆฌ์•กํŠธ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.
๋Œ€์ฒด ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฑด๊ฐ€..??? 
 
 
 
1. ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ / ๋ Œ๋”๋ง
 
๐Ÿ’ก Virtual DOM (๊ฐ€์ƒ๋”) ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ

Virtual DOM (๊ฐ€์ƒ๋”)
 : ์›น ํŽ˜์ด์ง€์™€ ์‹ค์ œ DOM์‚ฌ์ด์—์„œ ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด ์—ญํ• ์„ ํ•œ๋‹ค.

virtual DOM์€ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•  ์ตœ์†Œํ•œ์˜ ๋ถ€๋ถ„๋งŒ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋‹ค์‹œ ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ๋กœ ๋ Œ๋”๋งํ•œ๋‹ค.
์ฆ‰, DOM์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.
 

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

๋ฆฌ์•กํŠธ๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์‹ค์ œ ๋ Œ๋”๋ง๋œ UI๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
์ง์ ‘ DOM ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ ‘๊ทผํ•ด์„œ ๋ณ€๊ฒฝ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋กœ ํ‘œํ˜„๋œ DOM ํŠธ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
 
*ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€์˜ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 


Virtual DOM (๊ฐ€์ƒ๋”)์˜ ์žฌ์กฐ์ • ๊ณผ์ •
 
๋ฆฌ์•กํŠธ๋Š” ์‹ค์ œ DOM์˜ UI๋ฅผ ๊ฐ€์ง„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๊ฐ€์ƒ ๋”์€ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ์žฌ์กฐ์ •(Reconcilation)๊ณผ์ •์„ ํ†ตํ•˜์—ฌ ์‹ค์ œ DOM๊ณผ ๋™๊ธฐํ™” ํ•œ๋‹ค.
 
์žฌ์กฐ์ • ๊ณผ์ •์€ ํฌ๊ฒŒ 3๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค.
 
1. UI๊ฐ€ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๋ฉด, UI๋ฅผ Virtual DOM์œผ๋กœ ๋ Œ๋”๋งํ•œ๋‹ค.
(์ด๋•Œ ๋ Œ๋”๋ง์€ ์‹ค์ œ ํ™”๋ฉด์ƒ ๋ Œ๋”๋ง์ด ์•„๋‹Œ, ๋น„๊ต๋ฅผ ์œ„ํ•œ ๊ฐ€์ƒ ๋ Œ๋”๋ง)
 
2. ํ˜„์žฌ Virtual DOM๊ณผ ์ด์ „ Virtual  DOM์„ ๋น„๊ตํ•ด์„œ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
 
3. ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ๋ฐ˜์˜ํ•œ๋‹ค. 




2. ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜

์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ, ์กฐ๋ฆฝํ•œ๋‹ค.

 

3. ์žฌ์‚ฌ์šฉ์„ฑ

ํ•ด๋‹น ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๊ณณ์—๋„ ์‰ฝ๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
์ด๋•Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์˜์กด์„ฑ์„ ๋‚ฎ์ถฐ์•ผํ•œ๋‹ค.

 
 
 


 
 
 

3.  ๋ฆฌ์•กํŠธ ์ดˆ๊ธฐ ์„ค์ • ํ•˜๊ธฐ

๋‚˜๋Š” visual studio์˜  terminal์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
 
create-react-app(CRA)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
: ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋„๊ตฌ, ๋ฆฌ์•กํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์„ค์ •์ด ๋˜์–ด์žˆ์Œ.
 
1. ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜์˜ cmd๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
 
            "npx create-react-app <ํŒŒ์ผ๋ช…>"
 
์ž…๋ ฅํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒ ๋‹ค๋ฉฐ ์ง„ํ–‰ํ•˜๊ฒ ๋ƒ๊ณ  ๋ฌป๋Š”๋‹ค.  y ํƒ€์ดํ•‘! 

 
์ดํ›„์— ์ด๊ฒƒ์ €๊ฒƒ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์™„๋ฃŒํ•˜๋ฉด ํ™”๋ฉด๊ณผ ๊ฐ™์ด ๋ฆฌ์•กํŠธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒ์„ฑ๋œ๋‹ค.

 
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด,
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ช…๋ น์–ด๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ, ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
 
์ด์–ด์„œ ์•„๋ž˜์˜ cmd๋กœ ๋ฐฉ๊ธˆ ๋งŒ๋“  ํด๋”๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.
          " cd <ํŒŒ์ผ๋ช…>"
 
์ด์–ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค.
           "npm start"
 

 

 
๊ทธ๋Ÿผ ์ž๋™์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ฆฌ๊ณ , React ๋กœ๊ณ ๊ฐ€ ๋น™๊ธ€๋น™๊ธ€ ๋Œ์•„๊ฐ„๋‹ค..โ˜บ๏ธ
์„ฑ๊ณต์ ์œผ๋กœ localhost:3000์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜์žˆ๋‹ค.
 

 
 
 


 

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ