๋ฆฌ์•กํŠธ(React) vs ๋ทฐ(Vue)

๋ฆฌ์•กํŠธ(React)์™€ ๋ทฐ(Vue.js)๋Š” ๋ชจ๋‘ ํ˜„๋Œ€์ ์ธ ํ”„๋ก ํŠธ์—”๋“œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋‘ ๊ธฐ์ˆ ์˜ ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

react๋Š” UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ JSX(JavaScript XML)ํ˜•ํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ UI๋กœ์ง๊ณผ DOM์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์— ๋Šฅ์ˆ™ํ•ด์•ผ ํ•˜๋ฉฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋ฐ ์ž์œ ๋„๊ฐ€ ๋†’์€ํŽธ์ด๋‹ค. ๋˜ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ˜•์„ฑ์ด ์ž˜ ๋˜์–ด์žˆ๊ณ  ํฐ ํ”„๋กœ์ ํŠธ์— ์šฉ์ดํ•˜๋‹ค.

Vue๋Š” ์ œ๊ณต๋˜๋Š” html ๊ธฐ๋ฐ˜์˜ ํ…œํ”Œ๋ฆฟ์ด ์žˆ์–ด ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ œ์ž‘์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์ง„์ž…์žฅ๋ฒฝ์ด ๋‚ฎ๊ณ  ๊ฐœ๋ฐœ ์ž๊ฐ„ ์ฝ”๋“œ ํ†ต์ผ์„ฑ์ด ์žˆ์œผ๋ฉฐ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์šฉ์ดํ•˜๋‹ค.

๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(React)

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

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

์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Vue)

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

๊ฐ€์ƒ๋”(Virtual DOM)

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