๐Ÿ’™ ssafy

[SSAFYcial] ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ์„ ์ • ๊ณผ์ • ์ •๋ฆฌ

c0zi 2024. 10. 30. 17:30

์•ˆ๋…•ํ•˜์„ธ์š” ! SSAFYcial 11๊ธฐ ์ด์ง€ํ˜œ ๊ธฐ์ž์ž…๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธฐ์‚ฌ๋Š” ๋งˆ์ง€๋ง‰ ์ž์œจ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ, ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ์„ ์ • ๊ณผ์ •์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ”„๋กœ์ ํŠธ์—์„œ์˜ ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ •์€ ์ฑ„ํƒ ์ด์œ ๊ฐ€ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š”๋ฐ์š”. ์ด์™€ ๊ด€๋ จํ•ด์„œ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ๊ณ ๋ฏผํ•œ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.


ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €

๊ณ ๋ ค ๋Œ€์ƒ

  • npm โœ”
    • ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ์ƒ ์•ˆ์ •์„ฑ๊ณผ ์ ‘๊ทผ์„ฑ์ด ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • npm์€ ๊ฐ€์žฅ ๊ด‘๋ฒ”์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฌธ์„œํ™”๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ์šฉ์ดํ•˜๊ณ , Node.js์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ์ถ”๊ฐ€ ์„ค์น˜ ์—†์ด ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pnpm
    • ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์„ค์น˜ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • Yarn
    • ๋ณ‘๋ ฌ ์„ค์น˜์™€ ์˜คํ”„๋ผ์ธ ์บ์‹œ๋ฅผ ์ง€์›ํ•˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ‘€์„ ์ • ์ด์œ 

pnpm์ด๋‚˜ Yarn์ด ์„ฑ๋Šฅ๋ฉด์—์„œ ์šฐ์ˆ˜ํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ํฌ์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์–ด ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํฐ ๊ณ ๋ ค ๋Œ€์ƒ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋น ๋ฅธ ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…์„ ์œ„ํ•ด npm์„ ์ฑ„ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด / ํƒ€์ž… ์‹œ์Šคํ…œ

๊ณ ๋ ค ๋Œ€์ƒ

  • JavaScript
    • ์ˆœ์ˆ˜ JavaScript๋Š” ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋‚ฎ๊ณ  ์ง„์ž…์žฅ๋ฒฝ์ด ๋‚ฎ์€ ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ํƒ€์ž… ์•ˆ์ •์„ฑ์ด ๋ถ€์กฑํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • TypeScript โœ”
    • TypeScript๋Š” JavaScript์— ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ์„ ๋”ํ•œ ์–ธ์–ด๋กœ, ์ฝ”๋“œ ์ž‘์„ฑ ๋‹จ๊ณ„์—์„œ ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ๋ฏธ๋ฆฌ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • IDE์—์„œ ์ž๋™ ์™„์„ฑ๊ณผ ํƒ€์ž… ์ถ”๋ก ์„ ์ง€์›ํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜๊ณ , ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ์‹œ ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํƒ€์ž… ์ •์˜๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด, ํŒ€์› ๊ฐ„ ํ˜‘์—…์ด ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.
๐Ÿ‘€ ์„ ์ • ์ด์œ 

์ด๋ ฅ์„œ, ํ”„๋กœ์ ํŠธ ํšŒ๊ณ , ๊ธฐ์—… ๊ณต๊ณ  ๋“ฑ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์ƒ, TypeScript์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์ด ์ œ๊ณตํ•˜๋Š” ์ด์ ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์„ ์ •ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค :
- ์ž๋™์™„์„ฑ๊ณผ ํƒ€์ž… ์ฒดํฌ๋กœ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ
- ์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ฐœ์„ 
- ์‹คํ–‰ ์ „ ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ ๊ฐ€๋Šฅ

 

JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ณ ๋ ค ๋Œ€์ƒ

  • React โœ”
    • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์š”์†Œ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ ฅ์„œ, ํ”„๋กœ์ ํŠธ ํšŒ๊ณ , ์ž๊ธฐ์†Œ๊ฐœ์„œ ๋“ฑ ๋น„์Šทํ•œ ๊ตฌ์กฐ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” UI๊ฐ€ ๋งŽ์•„ ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
    • React๋Š” ๊ฑฐ๋Œ€ํ•œ ์ƒํƒœ๊ณ„๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด, TanStack Query, Zustand, Axios ๋“ฑ ํ”„๋กœ์ ํŠธ์—์„œ ์ฑ„ํƒํ•œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TypeScript์™€์˜ ํ˜ธํ™˜์„ฑ๋„ ์ข‹์•„, ์ปดํฌ๋„ŒํŠธ์˜ props์™€ ์ƒํƒœ์— ๋Œ€ํ•œ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋„๊ตฌ

  • Vite

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

๊ณ ๋ ค ๋Œ€์ƒ

https://yozm.wishket.com/magazine/detail/2233/

https://velog.io/@iberis/์ƒํƒœ๊ด€๋ฆฌ-๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ-๋น„๊ต-Redux-vs-Recoil-vs-Zustand-vs-Jotai

  • Redux
    • Redux๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜๋˜๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Redux DevTools๋ฅผ ํ†ตํ•œ ๋””๋ฒ„๊น…์ด ๊ฐ•๋ ฅํ•˜๊ณ , ๋ฏธ๋“ค์›จ์–ด ์‹œ์Šคํ…œ์œผ๋กœ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž‘์€ ์ƒํƒœ ๋ณ€ํ™”์—๋„ ๋งŽ์€ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๊ณ , Redux Toolkit์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์„ค์ •์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.
  • Zustand โœ”
    • Zustand๋Š” ์ตœ๊ทผ Redux๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๊ฐ„๋‹จํ•œ API๋กœ ๋น ๋ฅธ ํ•™์Šต ๊ฐ€๋Šฅ
      • Redux๋ณด๋‹ค ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ์ ์Œ
      • React ์™ธ๋ถ€์—์„œ๋„ ์ƒํƒœ ์ ‘๊ทผ ๊ฐ€๋Šฅ (์•Œ๋ฆผ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์œ ๋ฆฌ)
      • TypeScript ์ง€์›์ด ์šฐ์ˆ˜
      • ์ž‘์€ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ

CSS

๊ณ ๋ ค ๋Œ€์ƒ

  • CSS โœ”
    • ํŠนํžˆ CSS Module์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ CSS ์Šค์ฝ”ํ”„๊ฐ€ ์ž๋™์œผ๋กœ ๊ฒฉ๋ฆฌ
    • ํด๋ž˜์Šค๋ช…์ด ๊ณ ์œ ํ•œ ํ•ด์‹œ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ค‘๋ณต ๊ฑฑ์ • ์—†์Œ
    • ํŠนํžˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŽ์€ ํผ ์š”์†Œ๋“ค(์ด๋ ฅ์„œ, ํšŒ๊ณ , ์ž์†Œ์„œ)์ด ์žˆ์–ด ์Šคํƒ€์ผ ์ถฉ๋Œ ๋ฐฉ์ง€๊ฐ€ ์ค‘์š”
  • SCSS/SCSS
  • Tailwind CSS
  • Styled-components
  • Emotion

๋ฐ์ดํ„ฐ fetching ๋ฐ query ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ณ ๋ ค ๋Œ€์ƒ

  • TanStack Query(React Query)

 

HTTP ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ณ ๋ ค ๋Œ€์ƒ

  • Axios โœ”
    • ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ์šฐ์ˆ˜
    • ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํ†ตํ•œ ์š”์ฒญ/์‘๋‹ต ์ „์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • TypeScript ์ง€์›์ด ์šฐ์ˆ˜
    • ์—๋Ÿฌ ํ•ธ๋“ค๋ง์ด ์šฉ์ด
    • ํŠนํžˆ AI API ํ˜ธ์ถœ ์‹œ ์•ˆ์ •์ ์ธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ