Front End/React

κ°œλ°œμ„ μœ„ν•œ ν”„λ ˆμž„μ›Œν¬ μ„ΈνŒ…

🌐

ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ€ λ…μžμ μΈ μ „λ¬Έ μ˜μ—­μœΌλ‘œ 인정받은지 μ–Όλ§ˆ λ˜μ§€ μ•Šμ•˜κ³ , λ³€ν™”κ°€ λ¬΄κΆλ¬΄μ§„ν•œ 뢄야이닀. 특히 JavaScript 특유의 λ‹€μž¬λ‹€λŠ₯함 λ•Œλ¬Έμ— 선택할 수 μžˆλŠ” 기술 μŠ€νƒμ˜ 쑰합도 λ§Žμ€λ°, 이런 λ‹€μž¬λ‹€λŠ₯함은 μ΄ˆμ‹¬μžμ—κ²Œ μžˆμ–΄ 단점이 λ˜κΈ°λ„ ν•œλ‹€.

  • ν•˜λ‚˜μ˜ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œλŒ€λ‘œ ν•™μŠ΅ν•˜μ§€ λͺ»ν–ˆλŠ”데, λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ–΄μ„€ν”„κ²Œ ν•™μŠ΅ν•¨
  • μ–΄λ–€ 기술 μŠ€νƒμ„ μ‚¬μš©ν• μ§€ 고민만 ν•˜λ‹€ 개발 κΈ°νšμ„ μ œλŒ€λ‘œ μ‹œμž‘ν•˜μ§€ λͺ»ν•¨
  • 개발 ν”„λ‘œμ νŠΈμ— λ³„λ‘œ ν•„μš”ν•˜μ§€ μ•Šμ€ κ³Όλ„ν•œ 기술 μŠ€νƒ μ„€μΉ˜

이런 상황을 막기 μœ„ν•΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ œμž‘μ„ μœ„ν•΄ κΌ­ ν•„μš”ν•œ μŠ€νƒμ„ μ„ νƒν•˜κ³  이λ₯Ό μ„ΈνŒ…ν•˜λŠ” 과정이 ν•„μš”ν•˜λ‹€.

ν•„μˆ˜ ν•­λͺ©

Node.js

Node.jsλŠ” JavaScriptλ₯Ό λΈŒλΌμš°μ € λ°–μ—μ„œλ„ μ‹€ν–‰ν•  수 μžˆλŠ” λŸ°νƒ€μž„μœΌλ‘œ, 배포 μ „ 개발 λ‹¨κ³„μ—μ„œ JavaScript둜 λ²ˆλ“€λ§μ΄λ‚˜ μ΅œμ ν™” λ“± λ§Žμ€ 개발 μž‘μ—…μ„ κ°€λŠ₯ν•˜κ²Œλ” ν•œλ‹€.

Node.js νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €

νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €λŠ” μ—¬λŸ¬ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ν•œκΊΌλ²ˆμ— λͺ¨μ•„ μ„€μΉ˜, μ—…κ·Έλ ˆμ΄λ“œ, μ„€μ •, μ‚­μ œ 등을 ν•  수 μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄ 툴둜, λŒ€ν‘œμ μœΌλ‘œ npmκ³Ό yarn이 μžˆλ‹€.

버전 관리 μ‹œμŠ€ν…œ / ν˜•μƒ 관리 μ‹œμŠ€ν…œ + 원격 리포지토리 μ„œλΉ„μŠ€

ν”„λ‘œμ νŠΈ μ „λ°˜μ μΈ κ³Όμ •μ—μ„œ μ½”λ“œμ˜ 버전 관리와 ν˜‘μ—…μ„ μœ„ν•œ 원격 리포지토리 μ„œλΉ„μŠ€λ₯Ό 많이 μ‚¬μš©ν•˜λŠ” 좔세이닀. λŒ€ν‘œμ μœΌλ‘œ Gitκ³Ό Githubκ°€ μžˆλ‹€.

ν”„λ‘ νŠΈμ—”λ“œ ν”„λ ˆμž„μ›Œν¬(라이브러리)

Vanila JS둜 κ°œλ°œν•˜λŠ” 것이 μ•„λ‹ˆλΌλ©΄ κ°œλ°œν•˜κ³ μž ν•˜λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— 따라 취사선택 ν•  수 μžˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ React, Vue, Next.js 등이 μžˆλ‹€.

  • CRA(Create React App)

    React κ°œλ°œμ§„μ΄ 쉽고 λΉ λ₯΄κ²Œ React SPAλ₯Ό κ°œλ°œν•  수 μžˆλ„λ‘ μ—¬λŸ¬ μ˜€ν”ˆμ†ŒμŠ€λ₯Ό λ¬Άμ–΄ μ œκ³΅ν•˜λŠ” 툴체인으둜, λ²ˆλ“€λ§μ΄λ‚˜ 배포, ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ κΈ°λ³Έ 섀정이 λͺ¨λ‘ λ˜μ–΄ μžˆμ–΄ 개발 ν™˜κ²½ 섀정을 큰 곡을 듀이지 μ•Šκ³  μ‹œμž‘ν•  수 μžˆλ‹€.

CSS

CSSλŠ” κ°œλ°œμžλ‚˜ νšŒμ‚¬μ—μ„œ μ μš©ν•˜λŠ” 방법이 각기 λ‹€λ₯΄λ©°, μƒλŒ€μš°μ›”μ„ κ°€λŠ ν•˜κΈ° μ–΄λ €μš΄ 뢀뢄이 크기 λ•Œλ¬Έμ—, 각자의 λ‹ˆμ¦ˆμ— 맞게 μ‚¬μš©ν•  수 μžˆλ‹€.

  • CSS 넀이밍 μ»¨λ²€μ…˜ : BEM, Utility-First (Tailwind, Bootstrap)
  • CSS 관리 방법
    • CSS-in-JS 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈλ‘œ λ¬Άμ–΄ 관리: Styled-Component, Emotion
    • Utility-First CSS: Tailwind CSS, Bootstrap
    • CSS 파일 λ”°λ‘œ 관리
    • SASS μ‚¬μš©
    • UI ν”„λ ˆμž„μ›Œν¬ μ‚¬μš© (λΉ„μΆ”μ²œ): Material UI, Chakra UI, Radix UI

λ¦°ν„°

문법 μ—λŸ¬λ‚˜ μ½”λ“œ μŠ€νƒ€μΌ κ·œμΉ™μ— λ§žμ§€ μ•ŠλŠ” μ½”λ“œλ₯Ό μ°Ύμ•„μ£ΌλŠ” 툴둜, JavaScriptμ—μ„œλŠ” eslint, prettierκ°€ κ°€μž₯ λŒ€ν‘œμ μ΄λ‹€. FE μ½”λ“œ λ² μ΄μŠ€μ—μ„œλŠ” κ°€λŠ₯ν•˜λ©΄ FE 개발자 κ°„ ν•©μ˜λœ μ½”λ“œ μŠ€νƒ€μΌλ§ κ·œμΉ™μ„ μ‚¬μš©ν•΄ μ½”λ“œ λ³€ν™”λ₯Ό μ΅œμ†Œν™”ν•˜κ³  가독성 높은 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것이 μ’‹λ‹€.

선택 ν•­λͺ©

HTTP μš”μ²­

κΈ°λ³Έμ μœΌλ‘œλŠ” Fetch APIλ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ, μ—¬λŸ¬ λΆ€κ°€κΈ°λŠ₯이 μΆ”κ°€λœ 라이브러리λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. μ–΄λ–€ 방법을 μ‚¬μš©ν•΄λ„ 상관 μ—†μ§€λ§Œ FE 개발자 κ°„ ν˜Όμš©ν•˜μ§€ μ•Šκ³  ν•˜λ‚˜λ§Œ μ‚¬μš©ν•œλ‹€.

  • Fetch API & isomorphic-fetch
  • Axios
  • React Query (TanStack Query)
  • SWR

μƒνƒœ 관리

React의 props-drilling λ¬Έμ œμ™€ μƒνƒœμ˜ 효율적 관리λ₯Ό μœ„ν•΄ λ‹€μ–‘ν•œ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μžˆλ‹€. Flux νŒ¨ν„΄μ„ 기반으둜 ν•œ λŒ€ν‘œμ μΈ 라이브러리인 Reduxκ°€ 있고, 이 외에도 이λ₯Ό μœ„μ‹œν•œ 라이브러리 쀑 ν•„μš”μ— 따라 μ„ νƒν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. μ–΄λ–€ λΌμ΄λΈŒλŸ¬λ¦¬λ“  상관 μ—†μ§€λ§Œ FE 개발자 κ°„ ν˜Όμš©ν•˜μ§€ μ•Šκ³  ν•˜λ‚˜λ§Œ μ‚¬μš©ν•œλ‹€.

  • Redux
  • Recoil
  • Zustand
  • React Context API
  • Mobx

TypeScript

TypeScriptλŠ” JavaScript의 동적 μ–Έμ–΄ νƒ€μž…μ—μ„œ μ˜€λŠ” λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•œ Superset으둜, 정적 μ–Έμ–΄ νƒ€μž…μ²˜λŸΌ λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ 리턴값에 νƒ€μž…μ„ μ§€μ •ν•˜μ—¬ JavaScriptλ₯Ό μ‚¬μš©ν•  수 있게 ν•΄μ€€λ‹€. νƒ€μž…κ³Ό κ΄€λ ¨λœ μ—λŸ¬λ₯Ό μ—„λ°€ν•˜κ²Œ λ‚΄μ£ΌκΈ° λ•Œλ¬Έμ— κ²¬κ³ ν•œ κ°œλ°œμ„ λ•λŠ”λ‹€.

λ²ˆλ“€λŸ¬

CRA둜 Reactλ₯Ό κ°œλ°œν•˜κ²Œ 되면 ꡳ이 λ‹€λ₯Έ λ²ˆλ“€λŸ¬λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λ˜μ§€λ§Œ, ν•„μš”μ— 따라 λ”°λ‘œ λ²ˆλ“€λ§μ΄ ν•„μš”ν•˜λ‹€λ©΄ Webpack λ“± λ²ˆλ“€λŸ¬λ₯Ό λ³„λ„λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€. μ–΄λ–€ λ²ˆλ“€λŸ¬λ₯Ό 써도 상관 μ—†μ§€λ§Œ FE 개발자 κ°„ ν˜Όμš©ν•˜μ§€ μ•Šκ³  ν•˜λ‚˜λ§Œ μ‚¬μš©ν•œλ‹€.

ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬

ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬ μ—­μ‹œ CRA에 Jest와 React Testing Libraryκ°€ 있고, E2E ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ Cypressλ₯Ό μΆ”κ°€ μ„€μΉ˜ν•˜λ©΄ React μƒμ—μ„œ ν•„μš”ν•œ λŒ€λΆ€λΆ„μ˜ ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•΄ λ³„λ„μ˜ ν”„λ ˆμž„μ›Œν¬λ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ”λ‹€.


Uploaded by N2T