Front-end/REACT

[React] React๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์œค๋ฏผ_ 2021. 12. 18. 23:22

๐Ÿ“ข ํ˜„์žฌ ์ถ”๊ตฌํ•˜๋Š” ๋ชฉํ‘œ

ํ˜„ ๋ชฉํ‘œํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋„์ œ๋ชฉ ์—…๋กœ๋“œ SNS์ด๋‹ค.

๊ธฐ๋„์ œ๋ชฉ์„ ์—…๋กœ๋“œํ•˜๊ณ  ์ธ์Šคํƒ€๊ทธ๋žจ๊ณผ ๊ฐ™์ด ์ข‹์•„์š” ๊ธฐ๋Šฅ, ์—…๋กœ๋“œ ๊ธฐ๋Šฅ, ํ”„๋กœํ•„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ ,

๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๊ณ , ์ด๋ฅผ ์›น ์•ฑ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

์œ ํŠœ๋ธŒ์—์„œ ์ฐพ์•„๋ณด๋‹ˆ ์ •๋ง ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์Ÿ์•„์ ธ ๋‚˜์™”๋‹ค.

๊ทธ์ค‘ ๋‚ด๊ฐ€ ์„ ํƒํ•ด์•ผ ํ•  ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” JS(javascript)๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , react.js๋‚˜ vue. js ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด

๋ณด๋‹ค ํฌ๋ฆฌ์—์ดํ‹ฐ๋ธŒํ•˜๊ณ  ์ข‹์€ ์›น์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค ํ•˜๊ธฐ์— ๋ฐ”๋กœ ๊ณต๋ถ€์— ๋“ค์–ด๊ฐ”๋‹ค. 

๊ทธ์ „์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ react,vue,angular์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฟŒ๋ฆฌ์ธ ๋ฐ”๋‹๋ผ JS๋ฅผ ์•Œ๊ณ  ๊ฐ”์–ด์•ผ ํ–ˆ๋‹ค.

๊ฐ•์˜๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ ์ฒ˜์Œ์—” ๋„ˆ๋ฌด ๋ง‰๋ง‰ํ•˜๊ธฐ๋งŒํ–ˆ๋‹ค. (๋น„์ „๊ณต์ž์— ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ์ž˜ ํ™œ์šฉ ๋ชปํ•˜๋Š” ์„ฑ๊ฒฉ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

 

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ์ฃฝ์–ด๋ผ ๊ตฌ๊ธ€๋ง์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด๋•Œ ๋งŒ๋‚˜๊ฒŒ๋œ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•œ ์œ ํŠœ๋ฒ„ ๋ถ„๋“ค์ด ์žˆ๋‹ค.

๋“œ๋ฆผ ์ฝ”๋”ฉ, ๋…ธ๋งค๋“œ ์ฝ”๋”, ์ƒํ™œ์ฝ”๋”ฉ, ์ฝ”๋”ฉ ์• ํ”Œ ๋“ฑ์˜ ์˜์ƒ์„ ๋ฌด์ž‘์ • ๋ณด๋ฉด์„œ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹์„ ํก์ˆ˜ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

๊ทธ์ค‘ ๊ฐ€์žฅ ์ธ๊ธฐ๊ฐ€ ์žˆ๊ณ  ์•ˆ์ •์ ์ด๋ผ ํŒ๋‹จ๋œ ๊ฐ“๊ณ ์ž‰(์ƒํ™œ์ฝ”๋”ฉ)๋‹˜์˜ ๊ฐ•์˜๋ฅผ ์‹œ์ž‘์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์ž…๋ฌธํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์ธํ”„๋Ÿฐ์—์„œ ๊ฐ“ ๊ณ ์ž‰๋‹˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ๊ฐ•์˜๋ฅผ

๋…ธ๋งค๋“œ ์ฝ”๋”๋‹˜์˜ ๋ฐ”๋‹๋ผ JS๋ฅผ ์ด์šฉํ•œ To Do List, Paintbrush ์›น์„ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค.

JS๋Š” ์ •๋ง ๋„ˆ๋ฌด ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋‚ด์šฉ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. ๋•Œ๋ฌธ์— ๋™์ž‘ ์›๋ฆฌ์— ์ต์ˆ™ํ•ด์ง€๋Š” ์ด ํƒ€์ด๋ฐ์—

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋„˜์–ด๊ฐ€ ๋ณด๋ ค ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ํŽ˜์ด์Šค๋ถ(ํ˜„:๋ฉ”ํƒ€)์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ React๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ž ๊น! ๋‚ด๊ฐ€ Vue.js๊ฐ€ ์•„๋‹Œ React๋ฅผ ์„ ํƒํ•œ ์ด์œ .

 

Q. Vue.js๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  React๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š” ์™ค๊นŒ?

A. ์ˆ˜๋งŽ์€ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด vue์™€ react ์ค‘ ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋‚˜ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค. (angular์€ ๊ณ ๋ฏผ๋„ ๋ชปํ–ˆ๋‹ค...)

vue๋Š” ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ ๊ฐ™์€ ์ฝ”์ƒ์•„(์ฝ”๋”ฉ ์‹ ์ƒ์•„)์—๊ฒ ์•Œ๋งž์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

+) ๋‚ด๊ฐ€ ๊ณ„ํšํ•œ ์›น ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด vue๊ฐ€ ์–ด์šธ๋ฆฌ์ง€ ์•Š์„๊นŒ?๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ react๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š” react๋Š” ํ˜„์žฌ ํ•œ๊ตญ์—์„œ(2021๊ธฐ์ค€) ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ,

vue๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  react๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ๋ณด๋‹ค react๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  vue๋Š” ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ๋‹ค๋Š” ์˜๊ฒฌ์ด ์ •๋ง ๋งŽ์•˜๋‹ค.

( "react, vue ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต๋ถ€ํ•ด์•ผํ•ด?"๋ณด๋‹ค ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค. IT๋Š” ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— react๋Š” ์˜์›ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

๊ทธ๋ ‡๊ธฐ์— ๋‚œ react๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.


๐Ÿ“ข ๋ฆฌ์•กํŠธ ๊ณต๋ถ€ ๊ณ„ํš

react๊ณต๋ถ€๋Š” ๊น€๋ฏผ์ค€ ๋‹˜์˜ ํŒจ์ŠคํŠธ ์บ ํผ์Šค์™€ ZeroCho๋‹˜์˜ ์›น ๊ฒŒ์ž„์„ ๋งŒ๋“ค๋ฉฐ ๋ฐฐ์šฐ๋Š” react๋กœ ๊ณต๋ถ€ํ•  ์˜ˆ์ •์ด๋‹ค. 

+) ๊ฐ“๊ณ ์ž‰ ๋‹˜์˜ redux์™€ react-redux๋Š” ๋ฐ˜๋“œ์‹œ ๋ด๋ณด๋„๋ก ํ•˜์ž.

React ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋”ฐ๋ผ์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ •๋ง Best์ผ ์ˆ˜ ์žˆ์ง€๋งŒ,,,, ๋‚œ ์–ด๋ ต๋”๋ผ,,, 

 

TMI๋ฅผ ๋ฉˆ์ถ”๊ณ  ์ด์ œ๋ถ€ํ„ฐ react๋ž€ ๋ญ˜๊นŒ์— ๋Œ€ํ•œ ๊ธ€์„ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.


โœจReact๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋ฆฌ์•กํŠธ๋Š” ํŽ˜์ด์Šค๋ถ์ด ๋งŒ๋“  ์‚ฌ์šฉ์ž UI ๊ตฌ์ถ•์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

ํ•˜๋‚˜์˜ ๋‹จ์ผ url์„ ๊ฐ€์ง€๊ณ  SPA(Single Page Application)์œผ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅ์ผ€ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.

ํ”„๋ŸฐํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํ”„๋ ˆ์ž„์›Œํฌ

๋ฆฌ์•กํŠธ๋Š” ์ •๋ง ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋ŸฐํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋ฆฌ์•กํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ ์ „์—, ์ด ํ”„๋ŸฐํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€๊ฒŒ ์ •ํ™•ํžˆ ๋ญ”์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ํ•„์š”ํ•œ๊ฑด์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„ , ์‚ฌ์‹ค ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋„์›€ ์—†์ด๋„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

(๋‹จ์ˆœํžˆ ์ •์  ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑฐ๋ผ๋ฉด ๊ทธ๋ƒฅ HTML๊ณผ CSS๋งŒ์„ ์ด์šฉํ•ด ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. (NO ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ) ์—ฌ๊ธฐ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋”ํ•ด์ฃผ๋ฉด, ์œ ์ €์˜ ํ–‰๋™ ํ๋ฆ„์— ๋”ฐ๋ผ์„œ ๋™์ ์œผ๋กœ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.)

 

์š”์ฆ˜์˜ ์›น์€์š”, ๋‹จ์ˆœํ•œ ์›น ํŽ˜์ด์ง€ ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์š”์ฆ˜ ์›น์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.

๋ธŒ๋ผ์šฐ์ € ์ƒ์œผ๋กœ๋„ ์ •๋ง ์ž์—ฐ์Šค๋Ÿฌ์šด ํ๋ฆ„์œผ๋กœ ๋งค์šฐ ๋งŽ์€ ๊ฒƒ๋“ค์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

๊ฐ€๋ น ์‰ฌ์šด ์˜ˆ์‹œ๋กœ ํ•˜๋‹จ์— ์žˆ๋Š” react ๊ณต์‹ ๋ฌธ์„œ ํŽ˜์ด์ง€์—์„œ side bar์— ์žˆ๋Š” ๋ชฉ์ฐจ๋“ค์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด 

 

์‹œ์ž‘ํ•˜๊ธฐ – React

A JavaScript library for building user interfaces

ko.reactjs.org

ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๋กœ๋”ฉํ•˜๋ฉฐ ํ™”๋ฉด ๊นœ๋นก์ž„์ด ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•œ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋™์ž‘ํ•˜๋ฉฐ, ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์—์„œ๋„ ์•ฑ๊ณผ ๋น„์Šทํ•œ ๋Š๋‚Œ์œผ๋กœ ๋™์ž‘์„ ํ•œ๋‹ค.

 

์ด ๋ฆฌ์•กํŠธ๋Š” 3๊ฐ€์ง€์˜ ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
1. JSX ๋ฌธ๋ฒ•
2. Component ๊ธฐ๋ฐ˜
3. Virtual DOM

 

react๋Š” 3๊ฐ€์ง€ ๋ถ€๋ถ„์—์„œ ์ข‹์€ ๋ฉด๋ชจ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ์˜๊ฒฌ์„ ๋‹จ๋‹ค.

1. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๋ฉด์—์„œ ์šฐ์ˆ˜ํ•œ ๋ฉด๋ชจ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

2. ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๋ฐ˜์˜ํ•  ๋•Œ ์‹ฑํฌ๋กœ๋‚˜์ด์ฆˆ๊ฐ€ ์šฐ์ˆ˜ํ•˜๋‹ค.

3. ์žฌ์‚ฌ์šฉ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ข‹์•„ ์œ ์ง€๋ณด์ˆ˜ ๋ฉด์—์„œ ์ข‹์€ ๋ชจ์Šต์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค.

 

 


ํŽ˜์ด์Šค๋ถ์€ ์™œ ๋ฆฌ์•กํŠธ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋์„๊นŒ?

ํŽ˜์ด์Šค๋ถ์ด ๋ฆฌ์•กํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์—๋„, ์ด๋ฏธ Angular, Backbone, Knockout.js, Ember ๋“ฑ์˜ ์ˆ˜๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ๋ฐ์ดํ„ฐ๋‹จ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋ธ(Model), ์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด์—์„œ ๋ณด์ด๊ฒŒ ๋˜๋Š” ๋ทฐ(View), ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ปจํŠธ๋กค๋Ÿฌ (Controller)๋กœ ์ด๋ค„์ง„ MVC ํŒจํ„ด, ๊ทธ๋ฆฌ๊ณ  MVC ์—์„œ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ MVVM(View Model), MVW(Whatever) ๋“ฑ์˜ ํŒจํ„ด๋“ค๋กœ ์ด๋ค„์ ธ ์žˆ์ฃ .

 

์—ฌ๊ธฐ์„œ ๊ณตํ†ต์ ์€ ๋ฐ”๋กœ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์–ธ๊ธ‰ํ–ˆ๋˜ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์˜ ๋ชจ๋ธ์€, ๋Œ€๋ถ€๋ถ„ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋ƒ๋ฉด, ์–‘๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์„ ํ†ตํ•˜์—ฌ ๋ชจ๋ธ์— ์žˆ๋Š” ๊ฐ’์ด ๋ณ€ํ•˜๋ฉด, ๋ทฐ์—์„œ๋„ ์ด๋ฅผ ๋ณ€ํ™”์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์€ ๋ณ€ํ™”์‹œ์ผœ์ค€๋‹ค๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ ์ฒซ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๊ณ , ๋ณ€ํ™”์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๊ณณ์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฑฐ์ฃ .

 

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

 

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ง„์งœ ๊ฐ„๋‹จํ•˜๊ฒ ์ฃ ? ๊ทธ๋Ÿฐ๋ฐ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฌด์Šจ ๊ฒŒ์ž„ ์—”์ง„๋„ ์•„๋‹ˆ๊ณ , DOM ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์ด ํŽ˜์ด์ง€๋Š” ๊ทธ๋•Œ๊ทธ๋•Œ ์ƒˆ๋กœ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด๋ฒ„๋ฆฌ๋ผ๊ณ  ํ•˜๋ฉด ์„ฑ๋Šฅ์ ์œผ๋กœ ์—„์ฒญ๋‚œ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ, Virtual DOM์ž…๋‹ˆ๋‹ค.

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

์ด Virtual DOM์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๋” ์ด์ƒ ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธํ• ์ง€๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ทธ๋ƒฅ ์ผ๋‹จ ๋ฐ”๋€ ๋ฐ์ดํ„ฐ๋กœ ์ผ๋‹จ ๊ทธ๋ ค๋†“๊ณ  ๋น„๊ต๋ฅผ ํ•œ ๋‹ค์Œ์—, ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์ฐพ์•„์„œ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฑฐ์ฃ .

๋‹ค์Œ ๋™์˜์ƒ์„ ๋ณด์‹œ๋ฉด ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.

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

 

[์ถœ์ฒ˜: ํŒจ์ŠคํŠธ ์บ ํผ์Šค]

 

'Front-end > REACT' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React]JSX  (0) 2022.01.01