🐀 Web/🌐 React

λ¦¬μ•‘νŠΈ ν΄λ”κ΅¬μ‘°μ˜ 정석이 μžˆμ„κΉŒ

chamroro 2023. 2. 17. 23:29

μš°λ¦¬κ°€ μ½”λ”©ν•œ src 폴더

사싀 λ…Έλ§ˆλ“œμ½”λ”λ₯Ό λ”°λΌν–ˆκΈ° λ•Œλ¬Έμ—.. 그리고 이번 ν”„λ‘œμ νŠΈλŠ” κ·Έ μ•ˆμ—μ„œ μΆ©λΆ„νžˆ 컀버가 κ°€λŠ₯ν–ˆκΈ° λ•Œλ¬Έμ— 폴더ꡬ쑰에 λŒ€ν•œ 고민을 ν•  ν•„μš”κ°€ μ—†μ—ˆμ§€λ§Œ κ·Έλž˜λ„ 폴더 μŠ€νŠΈλŸ­μ³μ— 관심이 λ§Žμ€ λ‚˜λŠ” μ°Ύμ•„λ³΄μ•˜λ‹€! 

 

ν”ŒλŸ¬ν„°μ™€ λ‹€λ₯΄κ²Œ, λŒ€λΆ€λΆ„ 거의 ν†΅μΌλœ 폴더 슀트럭쳐λ₯Ό κ°–μΆ”μ–΄ μž‘μ—…μ„ ν•˜λŠ” λͺ¨μŠ΅μ„ λ³Ό 수 μžˆμ—ˆλ‹€. 

κ·Έλž˜μ„œ μ•žμœΌλ‘œ λ‚΄κ°€ 보고 κ³„μ†ν•΄μ„œ μ°Έκ³ ν• λ§Œν•œ λ‚΄μš©μ„ 가져와봀닀 ..! 

 

CRA의 초기 폴더ꡬ쑰

my-app
β”œβ”€β”€ node_modules
β”œβ”€β”€ public
β”œβ”€β”€ src
β”œβ”€β”€ .gitignore
β”œβ”€β”€ package.json
└── README.md
  • node_modules ν˜„μž¬ ν”„λ‘œμ νŠΈμ— ν¬ν•¨λœ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μ„€μΉ˜λ˜μ–΄ μžˆλŠ” ν΄λ”λ‘œ 보톡 κΉƒκ³Ό 같은 μ €μž₯μ†Œμ— 올릴 λ•ŒλŠ” 이 폴더λ₯Ό ν•¨κ»˜ μ˜¬λ¦¬μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • public index.htmlκ³Ό 같은 정적 파일이 ν¬ν•¨λ˜λŠ” 곳으둜 컴파일이 ν•„μš” μ—†λŠ” νŒŒμΌλ“€μ΄ μœ„μΉ˜ν•˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.
  • src λ¦¬μ•‘νŠΈ λ‚΄λΆ€μ—μ„œ μž‘μ„±ν•˜λŠ” 거의 λͺ¨λ“  νŒŒμΌλ“€μ΄ 이 폴더 λ‚΄λΆ€μ—μ„œ μž‘μ„±λ˜λ©° 이 폴더에 μžˆλŠ” νŒŒμΌλ“€μ€ λͺ…령어에 따라 JS둜 컴파일이 μ§„ν–‰λ©λ‹ˆλ‹€.
  • .gitignore 깃에 ν¬ν•¨ν•˜κ³  싢지 μ•Šμ€ 파일의 이름 ν˜Ήμ€ 폴더등을 μž…λ ₯ν•˜λŠ” νŒŒμΌμž…λ‹ˆλ‹€.
  • package.json ν”„λ‘œμ νŠΈμ— κ΄€λ ¨λœ 기본적인 λ‚΄μš©(ν”„λ‘œμ νŠΈμ˜ 이름, 버전 λ“±)κ³Ό λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ˜ λͺ©λ‘μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λœ node_modules λŒ€μ‹ μ— 이 package.json을 깃에 ν¬ν•¨ν•˜μ—¬ 올리게 되며 후에 λˆ„κ΅°κ°€κ°€ ν”„λ‘œμ νŠΈλ₯Ό 클둠할 λ•Œ 이 package.json에 μ ν˜€μžˆλŠ” 라이브러리의 λͺ©λ‘μ„ κΈ°μ€€μœΌλ‘œ npmμ—μ„œ μ„€μΉ˜ν•˜κ²Œ λ©λ‹ˆλ‹€.
  • README.md 보톡 κΉƒκ³Ό 같은 μ €μž₯μ†Œμ— 올릴 λ•Œ ν”„λ‘œμ νŠΈμ— λŒ€ν•œ μ„€λͺ…을 μž‘μ„±ν•˜λŠ”κ³³μœΌλ‘œ ν•΄λ‹Ή μ €μž₯μ†Œμ— μ§„μž…ν•˜λ©΄ κ°€μž₯ λ¨Όμ € λ„μ›Œμ§‘λ‹ˆλ‹€.

src λ‚΄λΆ€ 폴더ꡬ쑰

└─ src
 β”œβ”€ components
 β”œβ”€ assets
 β”œβ”€ hooks (= hoc)
 β”œβ”€ pages
 β”œβ”€ constants
 β”œβ”€ config
 β”œβ”€ styles
 β”œβ”€ services (= api)
 β”œβ”€ utils
 β”œβ”€ contexts
 β”œβ”€ App.js
 └─ index.js
  • components μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈλ“€μ΄ μœ„μΉ˜ν•˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.μ»΄ν¬λ„ŒνŠΈλŠ” 맀우 λ§Žμ•„μ§ˆ 수 있기 λ•Œλ¬Έμ— 이 폴더 λ‚΄λΆ€μ—μ„œ ν•˜μœ„ν΄λ”λ‘œ μΆ”κ°€λ‘œ λΆ„λ₯˜ν•˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.
  • assets 이미지 ν˜Ήμ€ ν°νŠΈμ™€ 같은 νŒŒμΌλ“€μ΄ μ €μž₯λ˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.이미지와 같은 νŒŒμΌλ“€μ„ public에 직접 λ„£λŠ” κ²½μš°λ„ μžˆλŠ”λ° λ‘˜μ˜ μ°¨μ΄λŠ” μ»΄νŒŒμΌμ‹œμ— ν•„μš”ν•œμ§€ μ—¬λΆ€μž…λ‹ˆλ‹€.νŒŒλΉ„μ½˜κ³Ό 같이 index.htmlλ‚΄λΆ€μ—μ„œ 직접 μ‚¬μš©ν•˜μ—¬ 컴파일 λ‹¨κ³„μ—μ„œ ν•„μš”ν•˜μ§€ μ•Šμ€ νŒŒμΌλ“€μ€ publicμ—λ°˜λ©΄, μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 이미지 파일인 경우 이 assets 폴더에 μœ„μΉ˜μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.
  • hooks (= hoc) μ»€μŠ€ν…€ 훅이 μœ„μΉ˜ν•˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.
  • pages react router등을 μ΄μš©ν•˜μ—¬ λΌμš°νŒ…μ„ μ μš©ν•  λ•Œ νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈλ₯Ό 이 폴더에 μœ„μΉ˜μ‹œν‚΅λ‹ˆλ‹€.
  • constants κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” μƒμˆ˜λ“€μ„ μ •μ˜ν•œ νŒŒμΌλ“€μ΄ μœ„μΉ˜ν•˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.
  • config config 파일이 λ§Žμ§€ μ•Šμ€ 경우 보톡 μ΅œμƒμœ„μ— μœ„μΉ˜μ‹œμΌœλ†“μ§€λ§Œ μ—¬λŸ¬κ°œμ˜ config 파일이 μžˆμ„ 경우 ν΄λ”λ‘œ λΆ„λ¦¬ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.
  • styles css νŒŒμΌλ“€μ΄ ν¬ν•¨λ˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.
  • services (= api)

보톡 apiκ΄€λ ¨ 둜직의 λͺ¨λ“ˆ 파일이 μœ„μΉ˜ν•˜λ©° auth와 같이 인증과 κ΄€λ ¨λœ 파일이 ν¬ν•¨λ˜κΈ°λ„ ν•©λ‹ˆλ‹€.

  • utils μ •κ·œν‘œν˜„μ‹ νŒ¨ν„΄μ΄λ‚˜ κ³΅ν†΅ν•¨μˆ˜ λ“± κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” μœ ν‹Έ νŒŒμΌλ“€μ΄ μœ„μΉ˜ν•˜λŠ” ν΄λ”μž…λ‹ˆλ‹€.
  • contexts contextAPIλ₯Ό μ‚¬μš©ν•  λ•Œ κ΄€λ ¨ νŒŒμΌλ“€μ΄ μœ„μΉ˜ν•˜λŠ”κ³³μœΌλ‘œ μƒνƒœκ΄€λ¦¬λ₯Ό μœ„ν•΄ contextAPI λŒ€μ‹  reduxλ₯Ό μ‚¬μš© ν•  경우 폴더 이름을 store둜 μ‚¬μš©ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.

μœ„ λ‚΄μš©μ„ λ”°λΌμ„œ 폴더 ꡬ쑰λ₯Ό 뢄리 ν•  경우 μ΄λ ‡κ²Œ μš©λ„μ— 맞게 ν΄λ”λ³„λ‘œ μ μ ˆν•˜κ²Œ λΆ„λ¦¬λœ λͺ¨μŠ΅μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ°˜μ‘ν˜•