νλ‘ νΈμλ κ°λ°μ λ μμ μΈ μ λ¬Έ μμμΌλ‘ μΈμ λ°μμ§ μΌλ§ λμ§ μμκ³ , λ³νκ° λ¬΄κΆλ¬΄μ§ν λΆμΌμ΄λ€. νΉν 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