๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

ํ˜„๋Œ€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ ์ฃผ๋ชฉ๋ฐ›๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋น„๊ต

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2024. 2. 7.
728x90

React

์†Œ๊ฐœ

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

์ฃผ์š” ํŠน์ง•

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

์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

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

์ƒํƒœ๊ณ„

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

Vue.js

์†Œ๊ฐœ

Vue.js๋Š” ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•๊ณผ ์ง๊ด€์ ์ธ ๋””์ž์ธ์œผ๋กœ ์‰ฝ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์ ์ง„์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜๊ธฐ ์šฉ์ดํ•˜๋ฉฐ, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  1. ์‰ฌ์šด ๋ฌธ๋ฒ•๊ณผ ๊ฐ€๋…์„ฑ: ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•๊ณผ ์ง๊ด€์ ์ธ ๋””์ž์ธ์œผ๋กœ ์‰ฝ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ ์ง„์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ: ์ ์ง„์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•˜๊ธฐ ์šฉ์ดํ•˜๋ฉฐ, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.
  3. ๋‹จ์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ: ๋งˆํฌ์—…, ์Šคํƒ€์ผ, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•œ ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Vue.js๋Š” React์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ฒฝ๋Ÿ‰ํ™”๋˜์–ด ์žˆ์ง€๋งŒ, Vuex์™€ ๊ฐ™์€ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ํšจ๊ณผ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํƒœ๊ณ„

Vue.js๋Š” ์ดˆ๋ณด์ž๋ถ€ํ„ฐ ์ค‘๊ธ‰์ž๊นŒ์ง€ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

Angular

์†Œ๊ฐœ

Angular๋Š” Google์—์„œ ๊ฐœ๋ฐœํ•œ ์™„์ „ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๊ทœ๋ชจ๊ฐ€ ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. TypeScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  1. ์™„์ „ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ: ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๊ทœ๋ชจ๊ฐ€ ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  2. TypeScript ์‚ฌ์šฉ: ์ •์  ํƒ€์ž… ์–ธ์–ด์ธ TypeScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๊ฐ•๋ ฅํ•œ DI(Dependency Injection): ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ†ตํ•ด ๋ชจ๋“ˆํ™”์™€ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ๊ด€๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Angular๋Š” ์ƒํƒœ ๊ด€๋ฆฌ์— RxJS์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด์— ๊ฐ•๋ ฅํ•œ DI ์‹œ์Šคํ…œ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํƒœ๊ณ„

Angular๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†”๋ฃจ์…˜์— ์ ํ•ฉํ•˜๋ฉฐ, TypeScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ดˆ๊ธฐ ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ํ•™์Šต ๊ณก์„ ์ด ๋†’๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ React, Vue.js, Angular ์ค‘ ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ• ์ง€๋Š” ์‹ ์ค‘ํ•œ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ณ ์œ ํ•œ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝํ—˜๊ณผ ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์„ ํƒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€