- π¨π» μ΄μΉν
- π¨π» κΉμ§ν
- π§π» λ¨μ±μ
- π§π» μμ μ§
- π§π» νμ λΌ
- π¨π» κΉμ 건
- π¨π» μ‘κ²½μ
https://github.com/bunderLikeLion/sellon_backend
λ©μμ΄ μ¬μμ²λΌ 10κΈ° μ 체 ν΄μ»€ν€
λΉμμ νλ μ¬νμμ μ§μμ μΌλ‘ μμ¬κ°λ μ‘λμ¬λμ λν 곡κ°μ λ¬Έμ λ₯Ό ν΄κ²° νκ³ μ κΈ°μ‘΄ λ¬Όνκ³Ό λμ΄ κ±°λλλ μμ₯μμ ννΌνμ¬
λ³ΈμΈμκ² νμ¬ νμμλ μ‘λμ¬λμ μ‘λμ¬λλ₯Ό 경맀μμΌλ‘ κ΅ννλ νλ«νΌμ κ°λ°νμμ΅λλ€. (π₯ μ½ 900 λͺ
μ°Έμ¬, 150ν μ€ λμ μμ)
π λ°νμλ£:
https://drive.google.com/file/d/1Uwi3p94A6QNPQz38whTSGdtU1dAzWQ5T/view?usp=sharing
πΌ Live Demo viodeo on Youtube:
https://www.youtube.com/watch?v=ackofamRNHc
- νμ κ°μ
- λ‘κ·ΈμΈ
- λ‘κ·Έμμ
- νμ μ 보 μμ
- νμ νν΄
- μμ΄ν λ±λ‘
- μμ΄ν μμΈλ³΄κΈ°
- μμ΄ν μμ
- μμ΄ν μμ
- 경맀 λ±λ‘
- μμ΄ν λ¬Άμ μ±ν
- 경맀 μ² ν
- μ±ν
- μ΅λ€ κ±°λμ λ° κ°μ’ ν΅κ³ λμΆ
π€ μ²λ¦¬ν΄μΌ ν μν
κ° λ§μλ λ무 λ§μλ€.
- μ μ μ 보
- μ§μμ μΌλ‘ μ λ°μ΄νΈλλ μλ²λ‘λΆν° λ°μμ€λ λ°μ΄ν°
- κ°κ°μ λ°μ΄ν°λ€μ λν pagination μ 보
- etc....
π‘ μ κ·Ό λ°©μ:
recoil
λ‘client μν
λ₯Ό μ²λ¦¬νκ³react-query
λ‘server μν
λ₯Ό μ²λ¦¬νλ λ°©μμΌλ‘ λΆλ¦¬νμμΌλ©°, queryλ¬Έλ€μ λνdependencies
λ€μ μ΄μ©νμ¬ μ΅λν κ°κ²°νκ² μ²λ¦¬ λ° μ¬μ©νμλ€.
π€ λ°©λν API λ‘ μΈν request
λ° response
κ³Όμ μμμ μ 체μ μΈ μ½λ κΈΈμ΄ μ¦κ° λ° κ°μ μ½λμ λ°λ³΅μ΄ μ΄λ£¨μ΄μ‘λ€.
π‘ μ κ·Ό λ°©μ:
- μμ²κ³Ό μλ΅μ λν
react-query
λ₯Ό μ¬μ©νcustom hook
μ μ λ° λΆλ¦¬μμ μ ν΅νμ¬ μ€μ μ»΄ν¬λνΈ λ λλ§μ λν μ½λμ μμ² λ° μλ΅μ μ²λ¦¬νλ μ½λλ₯Ό λΆλ¦¬νμλ€.
π€ λͺ¨λ¬ λ° λ°μ€μ κ°μ κΈ°λ³Έμ μΈ μ»΄ν¬λνΈλ€μ λν΄ μ μ¬ν μ½λλ€μ΄ μ§μμ μΌλ‘ λ°λ³΅
λμκ³ μ΄μλν ν΄κ²°μ±
κ³Ό κ°μ μ μ΄ μκΈνλ€.
π‘ μ κ·Ό λ°©μ:
- λ°λ³΅μ μΌλ‘ μ¬μ©λλ μ»΄ν¬λνΈλ€μ λν΄μλ λ°λ‘ μ΅λν λκ² μ¬μ©ν μ μλ
μ¬μ¬μ©
μ±μ΄ μλ μ»΄ν¬λνΈλ₯Ό λ°λ‘ μ μνμ¬ νμμ μν΄props
λ€μ ν΅νμ¬ μ¬μ©ν μ μκ² μ κ·Όνμλ€.
π€ ν΄μ»€ν€ νμ¬μ₯μ λΉμ μΈν°λ·μ΄ λ§€μ° λλ Έκ³
μ΄μ λν΄ μ°λ¦¬μ product
λ₯Ό μ λλ‘ λ³΄μ¬μ€ μ μμμ§μ λν΄ λΆνμ€μ±μ΄ μμλ€.
π‘ μ κ·Ό λ°©μ:
-
μ΄κΈ° νλ©΄ μ‘°μ°¨ λ λλ§μ΄ μλμ΄ νμ νλ©΄λ§ λμ€λ νλ€μ΄ 9ν μ΄μκ³ , μ΄μλ°λΌ νμ΄μ§ μ»΄ν¬λνΈ λ³λ‘
code splitting
μ ν΅νμ¬ μ΄κΈ°rendering bundle
μ μ΅μν νκ³ μ λ Έλ ₯νμλ€. λν, js bundle λ₯Ό μ½λ κ³Όμ μμsuspense
λ₯Ό μ¬μ©νμ¬ λ‘λ© μ»΄ν¬λνΈλ₯Ό 보μ¬μ£Όκ² μ²λ¦¬νμκ³ , μμ² λ° μλ΅ κ³Όμ μμλsuspense
λ₯Ό μ μ©νμ¬ λ‘λ© μ»΄ν¬λνΈλ₯Ό 보μ¬μ£Όμ΄ μ°λ¦¬νμ μ½λκ° κ³μ μ μμ μΌλ‘ λμκ°μ§λ§, μΈν°λ· νκ²½μΌλ‘ μΈν΄ μλκ° λλ¦°κ²μ΄λ€λ₯Ό νμ€ν μ΄ννλλ‘ λ Έλ ₯νμλ€. -
λλ¦° μΈν°λ·μΌλ‘ μΈν μλ²μ λν μμ²κ³Ό μλ΅μ λν process λ₯Ό μ΅μν νκ³ μ ν΄μ»€ν€ νμ₯μμ κΈνκ²
react-query
μμ μ 곡νλstaleTime
μ μ΄μ©νμ¬ μΊμ±μ λ΅μ μ κ·Ήμ μΌλ‘ μ¬μ©νλ € λ Έλ ₯νμ¬ μ¦κ°μ μΈ λ³νλ₯Ό μκ°μ μΌλ‘ 보μ¬μ£Όμ΄μΌ νλ λ°μ΄ν°λ₯Ό μ μΈνκ³ λ νλ² λ°μμ¨ λ°μ΄ν°λ₯Ό μμ²κ³Ό μλ΅κ³Όμ μμ΄ μ¬μ¬μ© νλ λ°©μμΌλ‘ λ λλ§μ νκ³ , νμν λλ§ λ°μ΄ν°λ₯Όrefetching
νλ λ°©μμΌλ‘ μ κ·Όνμλ€.
git clone https://github.com/bunderLikeLion/sellon_frontend
npm install
npm run start
"@ant-design/icons": "4.0.0",
"@emotion/react": "^11.10.0",
"@emotion/styled": "^11.10.0",
"@hookform/resolvers": "^2.9.6",
"@material-ui/core": "^4.12.4",
"@material-ui/lab": "^4.0.0-alpha.61",
"@mui/icons-material": "^5.8.4",
"@mui/joy": "^5.0.0-alpha.38",
"@mui/lab": "^5.0.0-alpha.92",
"@mui/material": "^5.9.2",
"@tanstack/react-query": "^4.0.10",
"@tanstack/react-query-devtools": "^4.0.10",
"antd": "^4.22.5",
"axios": "^0.27.2",
"moment": "^2.29.4",
"prettier": "^2.7.1",
"react": "^17.0.2",
"react-cookie": "^4.1.1",
"react-dom": "^17.0.2",
"react-dropzone": "^14.2.2",
"react-hook-form": "^7.33.1",
"react-hot-toast": "^2.3.0",
"react-loadingg": "^1.7.2",
"react-router-dom": "^6.3.0",
"react-scripts": "^5.0.0",
"react-slick": "^0.29.0",
"recoil": "^0.7.4",
"slick-carousel": "^1.8.1",
"styled-components": "^5.3.5",
"styled-reset": "^4.4.2",
"yup": "^0.32.11"