πŸš€βœ¨ React, TypeScript, 그리고 Next.js둜 μ™„μ„±ν•˜λŠ” μ™„λ²½ν•œ 폴더 ꡬ쑰! πŸŽ‰πŸ”§

κΉ€λ™ν˜Β·2025λ…„ 1μ›” 26일
37

λ¦¬μ—‘νŠΈ 문법

λͺ©λ‘ 보기
9/9
post-thumbnail

μ•ˆλ…•ν•˜μ„Έμš”, 개발자 μ—¬λŸ¬λΆ„! πŸ‘‹ μ˜€λŠ˜μ€ React, TypeScript, 그리고 Next.jsλ₯Ό ν™œμš©ν•˜μ—¬ ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν•  λ•Œ κΌ­ μ•Œμ•„μ•Ό ν•  폴더 ꡬ쑰에 λŒ€ν•΄ 재미있고 μœ μ΅ν•˜κ²Œ 이야기해보렀고 ν•΄μš”! πŸ₯³ 폴더 κ΅¬μ‘°λŠ” ν”„λ‘œμ νŠΈμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성에 큰 영ν–₯을 λ―ΈμΉ˜λ‹ˆ, μ˜¬λ°”λ₯Έ ꡬ쑰λ₯Ό κ°–μΆ”λŠ” 것이 μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€ ν•¨κ»˜ μ•Œμ•„λ³ΌκΉŒμš”? 🧐✨


🏠 폴더 ꡬ쑰의 λ§ˆλ²•: μ™œ μ€‘μš”ν•œκ°€? πŸ€”

폴더 κ΅¬μ‘°λŠ” ν”„λ‘œμ νŠΈμ˜ λΌˆλŒ€μ™€ κ°™μ•„μš”. 🦴 잘 짜인 폴더 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό 같은 μž₯점을 κ°€μ Έλ‹€μ€λ‹ˆλ‹€:

  • μœ μ§€λ³΄μˆ˜ μš©μ΄μ„±: μ½”λ“œκ°€ 잘 μ •λ¦¬λ˜μ–΄ μžˆμ–΄ 버그 μˆ˜μ •μ΄λ‚˜ κΈ°λŠ₯ μΆ”κ°€κ°€ μ‰¬μ›Œμš”. πŸ› οΈ
  • ν˜‘μ—… νš¨μœ¨μ„±: νŒ€μ›λ“€μ΄ 각자의 역할을 μ‰½κ²Œ μ΄ν•΄ν•˜κ³  μž‘μ—…ν•  수 μžˆμ–΄μš”. 🀝
  • ν™•μž₯μ„±: ν”„λ‘œμ νŠΈκ°€ 컀져도 μ‰½κ²Œ 관리할 수 μžˆμ–΄μš”. πŸ“ˆ

πŸ“– μ—ν”Όμ†Œλ“œ: 폴더 ꡬ쑰의 μ€‘μš”μ„±μ„ 깨달은 μˆœκ°„

ν•œ λ²ˆμ€ νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ 폴더 ꡬ쑰가 μ—‰λ§μ΄μ–΄μ„œ μ€‘μš”ν•œ νŒŒμΌμ„ 찾지 λͺ»ν•΄ 밀을 μƒˆλ©° 버그λ₯Ό 고쳐야 ν–ˆλ˜ κ²½ν—˜μ΄ μžˆμ–΄μš”. 😱 κ·Έλ•Œ κΉ¨λ‹¬μ•˜μ£ . 잘 μ§œμ—¬μ§„ 폴더 ꡬ쑰가 μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€! μ΄ν›„λ‘œλŠ” 항상 체계적인 ꡬ쑰λ₯Ό μœ μ§€ν•˜λ €κ³  λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬λΆ„λ„ 이런 μ‹€μˆ˜λ₯Ό λ°˜λ³΅ν•˜μ§€ μ•Šλ„λ‘ 미리 λŒ€λΉ„ν•΄λ³΄μ„Έμš”! πŸ˜‰


πŸ“ 기본적인 폴더 ꡬ쑰 μ‚΄νŽ΄λ³΄κΈ°

λ¨Όμ €, Create React App(CRA)κ³Ό Next.js둜 μƒμ„±λœ κΈ°λ³Έ 폴더 ꡬ쑰λ₯Ό μ‚΄νŽ΄λ³Όκ²Œμš”. πŸ› οΈ

Create React App + TypeScript 기본 ꡬ쑰

my-app/
β”œβ”€β”€ node_modules/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ index.html
β”‚   └── ...
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ App.tsx
β”‚   β”œβ”€β”€ index.tsx
β”‚   └── ...
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ package.json
└── ...

Next.js 기본 ꡬ쑰

my-next-app/
β”œβ”€β”€ node_modules/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ favicon.ico
β”‚   └── ...
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ about.tsx
β”‚   └── api/
β”‚       └── hello.ts
β”œβ”€β”€ styles/
β”‚   β”œβ”€β”€ globals.css
β”‚   └── Home.module.css
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ package.json
└── ...

이 ꡬ쑰듀은 μž‘κ³  λ‹¨μˆœν•œ ν”„λ‘œμ νŠΈμ— μ ν•©ν•˜μ§€λ§Œ, ν”„λ‘œμ νŠΈκ°€ 컀지면 파일이 ν˜Όμž‘ν•΄μ§ˆ 수 μžˆμ–΄μš”. πŸ˜… κ·Έλž˜μ„œ μ’€ 더 체계적인 폴더 ꡬ쑰가 ν•„μš”ν•˜λ‹΅λ‹ˆλ‹€! 🎯


🌟 ν™•μž₯ κ°€λŠ₯ν•œ 폴더 ꡬ쑰 μ„€κ³„ν•˜κΈ°

ν”„λ‘œμ νŠΈμ˜ 규λͺ¨μ™€ λ³΅μž‘μ„±μ— 따라 λ‹€μ–‘ν•œ 폴더 ꡬ쑰λ₯Ό 선택할 수 μžˆλŠ”λ°μš”, μ—¬κΈ°μ„œλŠ” κΈ°λŠ₯별 λΆ„λ₯˜(Feature-based)와 파일 μœ ν˜•λ³„ λΆ„λ₯˜(Type-based) 두 가지 접근법을 μ†Œκ°œν• κ²Œμš”. 그리고 두 가지λ₯Ό ν˜Όν•©ν•œ ν˜Όν•© 접근법도 ν•¨κ»˜ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€! 🧩

1. κΈ°λŠ₯별 λΆ„λ₯˜ (Feature-based) πŸ”

κΈ°λŠ₯별 λΆ„λ₯˜λŠ” ν”„λ‘œμ νŠΈλ₯Ό κΈ°λŠ₯ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ 폴더λ₯Ό κ΅¬μ„±ν•˜λŠ” λ°©λ²•μ΄μ—μš”. 각 κΈ°λŠ₯λ³„λ‘œ κ΄€λ ¨ νŒŒμΌλ“€μ„ ν•¨κ»˜ 두어 κ΄€λ¦¬ν•˜κΈ° μ‰¬μ›Œμš”. 🌟

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Header/
β”‚   β”‚   β”œβ”€β”€ Header.tsx
β”‚   β”‚   β”œβ”€β”€ Header.module.css
β”‚   β”‚   └── Header.test.tsx
β”‚   └── Footer/
β”‚       β”œβ”€β”€ Footer.tsx
β”‚       β”œβ”€β”€ Footer.module.css
β”‚       └── Footer.test.tsx
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.tsx
β”‚   β”‚   β”‚   └── Register.tsx
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   └── useAuth.ts
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── authService.ts
β”‚   β”‚   └── authSlice.ts
β”‚   └── posts/
β”‚       β”œβ”€β”€ components/
β”‚       β”‚   β”œβ”€β”€ PostList.tsx
β”‚       β”‚   └── PostItem.tsx
β”‚       β”œβ”€β”€ hooks/
β”‚       β”‚   └── usePosts.ts
β”‚       β”œβ”€β”€ services/
β”‚       β”‚   └── postService.ts
β”‚       └── postsSlice.ts
β”œβ”€β”€ hooks/
β”‚   └── useWindowSize.ts
β”œβ”€β”€ services/
β”‚   └── api.ts
β”œβ”€β”€ utils/
β”‚   └── helpers.ts
β”œβ”€β”€ App.tsx
└── index.tsx

μž₯점:

  • πŸ•΅οΈβ€β™‚οΈ μ°ΎκΈ° 쉬움: κ΄€λ ¨ νŒŒμΌλ“€μ΄ ν•œ 곳에 λͺ¨μ—¬μžˆμ–΄ ν•„μš”ν•œ νŒŒμΌμ„ μ‰½κ²Œ 찾을 수 μžˆμ–΄μš”.
  • 🀝 ν˜‘μ—… 용이: νŒ€μ›λ“€μ΄ νŠΉμ • κΈ°λŠ₯을 λ‹΄λ‹Ήν•  λ•Œ μž‘μ—… λ²”μœ„κ°€ λͺ…ν™•ν•΄μ Έ νš¨μœ¨μ μ΄μ—μš”.

팁: 각 κΈ°λŠ₯별 폴더 μ•ˆμ— components, hooks, services 등을 μ„ΈλΆ„ν™”ν•˜λ©΄ λ”μš± μ²΄κ³„μ μœΌλ‘œ 관리할 수 μžˆμ–΄μš”! πŸ“‚

2. 파일 μœ ν˜•λ³„ λΆ„λ₯˜ (Type-based) πŸ—‚οΈ

파일 μœ ν˜•λ³„ λΆ„λ₯˜λŠ” μ»΄ν¬λ„ŒνŠΈ, μŠ€νƒ€μΌ, μœ ν‹Έλ¦¬ν‹° λ“± 파일의 μœ ν˜•μ— 따라 폴더λ₯Ό λ‚˜λˆ„λŠ” λ°©λ²•μ΄μ—μš”. πŸ“‚

src/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Header.tsx
β”‚   β”œβ”€β”€ Header.module.css
β”‚   β”œβ”€β”€ Footer.tsx
β”‚   └── Footer.module.css
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ Home.tsx
β”‚   β”œβ”€β”€ Home.module.css
β”‚   β”œβ”€β”€ About.tsx
β”‚   └── About.module.css
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ api.ts
β”‚   └── auth.ts
β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ useAuth.ts
β”‚   └── useFetch.ts
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ helpers.ts
β”‚   └── constants.ts
β”œβ”€β”€ App.tsx
└── index.tsx

μž₯점:

  • πŸ“ μœ ν˜•λ³„ 정리: 파일 μœ ν˜•λ³„λ‘œ 정리가 λ˜μ–΄ μžˆμ–΄ νŠΉμ • μœ ν˜•μ˜ νŒŒμΌμ„ μ°ΎκΈ° μ‰¬μ›Œμš”.
  • 🧭 직관적 ꡬ쑰: ν”„λ‘œμ νŠΈμ˜ 전체적인 ꡬ쑰가 μ§κ΄€μ μ΄μ–΄μ„œ μ΄ν•΄ν•˜κΈ° μ‰¬μ›Œμš”.

팁: 파일 μœ ν˜•λ³„λ‘œ λΆ„λ₯˜ν•  λ•ŒλŠ” 넀이밍 κ·œμΉ™μ„ μΌκ΄€λ˜κ²Œ μœ μ§€ν•˜λŠ” 것이 μ€‘μš”ν•΄μš”. 예λ₯Ό λ“€μ–΄, μ»΄ν¬λ„ŒνŠΈλŠ” PascalCase, μŠ€νƒ€μΌμ€ camelCase둜 톡일할 수 μžˆμ–΄μš”! πŸ“


🌈 ν˜Όν•© 접근법: κΈ°λŠ₯별 + 파일 μœ ν˜•λ³„ 🧩

μ‹€μ œ ν”„λ‘œμ νŠΈμ—μ„œλŠ” κΈ°λŠ₯별 λΆ„λ₯˜μ™€ 파일 μœ ν˜•λ³„ λΆ„λ₯˜λ₯Ό ν˜Όν•©ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žμ•„μš”. μ΄λ ‡κ²Œ ν•˜λ©΄ 각 μ ‘κ·Όλ²•μ˜ μž₯점을 λͺ¨λ‘ λˆ„λ¦΄ 수 μžˆλ‹΅λ‹ˆλ‹€! πŸ˜„

src/
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.tsx
β”‚   β”‚   β”‚   └── Register.tsx
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   └── useAuth.ts
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── authService.ts
β”‚   β”‚   └── authSlice.ts
β”‚   └── posts/
β”‚       β”œβ”€β”€ components/
β”‚       β”‚   β”œβ”€β”€ PostList.tsx
β”‚       β”‚   └── PostItem.tsx
β”‚       β”œβ”€β”€ hooks/
β”‚       β”‚   └── usePosts.ts
β”‚       β”œβ”€β”€ services/
β”‚       β”‚   └── postService.ts
β”‚       └── postsSlice.ts
β”œβ”€β”€ common/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Header.tsx
β”‚   β”‚   └── Footer.tsx
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── useFetch.ts
β”‚   └── utils/
β”‚       └── helpers.ts
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ images/
β”‚   └── styles/
β”œβ”€β”€ App.tsx
└── index.tsx

μž₯점:

  • πŸ› οΈ λͺ¨λ“ˆν™”: κΈ°λŠ₯ λ‹¨μœ„λ‘œ λͺ¨λ“ˆν™”λ˜μ–΄ μžˆμ–΄ μœ μ§€λ³΄μˆ˜κ°€ 훨씬 μ‰¬μ›Œμ Έμš”.
  • πŸ“Œ λͺ…ν™•ν•œ ꡬ뢄: 곡톡 λͺ¨λ“ˆκ³Ό κΈ°λŠ₯별 λͺ¨λ“ˆμ„ λͺ…ν™•νžˆ ꡬ뢄할 수 μžˆμ–΄μš”.

팁: κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” μ»΄ν¬λ„ŒνŠΈλ‚˜ μœ ν‹Έλ¦¬ν‹°λŠ” common/ 폴더에 두어 μ—¬λŸ¬ κΈ°λŠ₯μ—μ„œ μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄λ³΄μ„Έμš”! πŸ”„


πŸš€ Next.js와 ν•¨κ»˜ν•˜λŠ” 폴더 ꡬ쑰 🌐

Next.jsλŠ” React의 μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)을 μ§€μ›ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬λ‘œ, 자체적인 폴더 ꡬ쑰λ₯Ό 가지고 μžˆμ–΄μš”. πŸ›€οΈ Next.js의 κΈ°λ³Έ 폴더 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

my-next-app/
β”œβ”€β”€ node_modules/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ favicon.ico
β”‚   └── ...
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ about.tsx
β”‚   └── api/
β”‚       └── hello.ts
β”œβ”€β”€ styles/
β”‚   β”œβ”€β”€ globals.css
β”‚   └── Home.module.css
β”œβ”€β”€ tsconfig.json
β”œβ”€β”€ package.json
└── ...

πŸ“‚ Next.js 고유의 폴더

  • pages/: 각 파일이 μžλ™μœΌλ‘œ λΌμš°νŠΈκ°€ λ˜λŠ” ν΄λ”μ˜ˆμš”. pages/index.tsxλŠ” / κ²½λ‘œκ°€ 되고, pages/about.tsxλŠ” /about이 λ©λ‹ˆλ‹€. πŸ“„
  • public/: 정적 νŒŒμΌμ„ λ³΄κ΄€ν•˜λŠ” 곳으둜, μ΄λ―Έμ§€λ‚˜ 폰트 등을 μ €μž₯ν•΄μš”. πŸ“Έ
  • styles/: κΈ€λ‘œλ²Œ μŠ€νƒ€μΌκ³Ό λͺ¨λ“ˆ CSSλ₯Ό λ³΄κ΄€ν•΄μš”. 🎨
  • api/: μ„œλ²„λ¦¬μŠ€ ν•¨μˆ˜(API 라우트)λ₯Ό μž‘μ„±ν•˜λŠ” κ³³μ΄μ—μš”. 🌐

πŸ› οΈ Next.js와 ν•¨κ»˜ν•˜λŠ” ν™•μž₯된 폴더 ꡬ쑰

Next.js ν”„λ‘œμ νŠΈμ—μ„œλ„ κΈ°λŠ₯별 λΆ„λ₯˜λ₯Ό μ μš©ν•  수 μžˆμ–΄μš”. 예λ₯Ό λ“€μ–΄:

my-next-app/
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Header.tsx
β”‚   └── Footer.tsx
β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.tsx
β”‚   β”‚   β”‚   └── Register.tsx
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   └── useAuth.ts
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── authService.ts
β”‚   β”‚   └── authSlice.ts
β”‚   └── posts/
β”‚       β”œβ”€β”€ components/
β”‚       β”‚   β”œβ”€β”€ PostList.tsx
β”‚       β”‚   └── PostItem.tsx
β”‚       β”œβ”€β”€ hooks/
β”‚       β”‚   └── usePosts.ts
β”‚       β”œβ”€β”€ services/
β”‚       β”‚   └── postService.ts
β”‚       └── postsSlice.ts
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ index.tsx
β”‚   β”œβ”€β”€ about.tsx
β”‚   └── api/
β”‚       └── hello.ts
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ favicon.ico
β”‚   └── ...
β”œβ”€β”€ styles/
β”‚   β”œβ”€β”€ globals.css
β”‚   └── Home.module.css
β”œβ”€β”€ utils/
β”‚   └── helpers.ts
β”œβ”€β”€ App.tsx
β”œβ”€β”€ _app.tsx
└── index.tsx

팁:

  • Next.js의 pages/ ν΄λ”λŠ” λΌμš°νŒ…μ— μ€‘μš”ν•œ 역할을 ν•˜λ―€λ‘œ, κΈ°λŠ₯별 λΆ„λ₯˜λ₯Ό μ μš©ν•  λ•Œ components/λ‚˜ features/ ν΄λ”λŠ” pages 외뢀에 λ‘λŠ” 것이 μ’‹μ•„μš”! πŸ“‚
  • _app.tsx νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ κΈ€λ‘œλ²Œ λ ˆμ΄μ•„μ›ƒμ΄λ‚˜ μƒνƒœ 관리λ₯Ό μ„€μ •ν•  수 μžˆμ–΄μš”. πŸ› οΈ

πŸ“– μ—ν”Όμ†Œλ“œ: Next.js와 폴더 ꡬ쑰의 λ§Œλ‚¨

처음 Next.jsλ₯Ό λ„μž…ν–ˆμ„ λ•Œ, pages/ 폴더와 κΈ°λŠ₯별 폴더가 μ–΄λ–»κ²Œ μ‘°ν™”λ₯Ό μ΄λ£¨λŠ”μ§€ ν—·κ°ˆλ Έλ˜ 기얡이 λ‚˜λ„€μš”. πŸ˜… ν•˜μ§€λ§Œ 쑰금만 μ—°μŠ΅ν•˜λ©΄ 두 ꡬ쑰가 μ–΄λ–»κ²Œ μ–΄μš°λŸ¬μ§€λŠ”μ§€ 금방 이해할 수 μžˆμ–΄μš”. 특히 _app.tsx νŒŒμΌμ„ ν™œμš©ν•˜λ©΄ κΈ€λ‘œλ²Œ μŠ€νƒ€μΌκ³Ό λ ˆμ΄μ•„μ›ƒμ„ μ†μ‰½κ²Œ 관리할 수 μžˆμ–΄ 정말 νŽΈλ¦¬ν•˜λ‹΅λ‹ˆλ‹€!


πŸ’‘ 폴더 ꡬ쑰 섀계 μ‹œ 고렀사항 🧠

폴더 ꡬ쑰λ₯Ό 섀계할 λ•ŒλŠ” λͺ‡ 가지 μ€‘μš”ν•œ 사항을 κ³ λ €ν•΄μ•Ό ν•΄μš”. πŸ€”

1. ν™•μž₯μ„± 🌱

ν”„λ‘œμ νŠΈκ°€ 컀질 것을 μ˜ˆμƒν•˜κ³  폴더 ꡬ쑰λ₯Ό μ„€κ³„ν•˜μ„Έμš”. μ²˜μŒμ—λŠ” μž‘μ•„λ„ λ‚˜μ€‘μ— κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘ μœ μ—°ν•˜κ²Œ λ§Œλ“€μ–΄μ•Ό ν•΄μš”.

2. μž¬μ‚¬μš©μ„± ♻️

μ»΄ν¬λ„ŒνŠΈλ‚˜ ν›… 등을 μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ 곡톡 λͺ¨λ“ˆμ„ 잘 λΆ„λ¦¬ν•˜μ„Έμš”. 쀑볡을 쀄이고 μ½”λ“œμ˜ 일관성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. λͺ…ν™•μ„± πŸ”

폴더와 파일의 이름을 λͺ…ν™•ν•˜κ²Œ 짓고, 역할이 ν—·κ°ˆλ¦¬μ§€ μ•Šλ„λ‘ ꡬ쑰λ₯Ό λ‹¨μˆœν•˜κ²Œ μœ μ§€ν•˜μ„Έμš”.

4. ν˜‘μ—… 🀝

νŒ€μ›λ“€κ³Όμ˜ ν˜‘μ—…μ„ κ³ λ €ν•˜μ—¬ 폴더 ꡬ쑰λ₯Ό μ„€κ³„ν•˜μ„Έμš”. λˆ„κ΅¬λ‚˜ μ‰½κ²Œ μ΄ν•΄ν•˜κ³  λ”°λΌμ˜¬ 수 μžˆλŠ” ꡬ쑰가 μ€‘μš”ν•©λ‹ˆλ‹€.

5. TypeScript ν™œμš© πŸ› οΈ

TypeScriptλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” νƒ€μž… μ •μ˜ νŒŒμΌμ„ λ³„λ„λ‘œ κ΄€λ¦¬ν•˜κ±°λ‚˜, 각 μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨κ»˜ νƒ€μž…μ„ μ •μ˜ν•˜μ—¬ μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ λ†’μ—¬λ³΄μ„Έμš”! πŸ“š

팁: νƒ€μž… μ •μ˜λŠ” types/ 폴더λ₯Ό λ§Œλ“€μ–΄ μ€‘μ•™μ—μ„œ κ΄€λ¦¬ν•˜κ±°λ‚˜, 각 κΈ°λŠ₯별 폴더 μ•ˆμ— types.ts νŒŒμΌμ„ 두어 관리할 수 μžˆμ–΄μš”. πŸ—ƒοΈ


🧩 폴더 ꡬ쑰 μ΅œμ ν™” 팁 🌟

λ§ˆμ§€λ§‰μœΌλ‘œ, 폴더 ꡬ쑰λ₯Ό μ΅œμ ν™”ν•˜κΈ° μœ„ν•œ λͺ‡ 가지 νŒμ„ λ“œλ¦΄κ²Œμš”! 🌟

1. μΌκ΄€λœ 넀이밍 κ·œμΉ™ μ‚¬μš©ν•˜κΈ° πŸ“

폴더과 파일의 이름을 일관성 있게 μ§“λŠ” 것이 μ€‘μš”ν•΄μš”. 예λ₯Ό λ“€μ–΄, μ»΄ν¬λ„ŒνŠΈλŠ” PascalCase, νŒŒμΌμ€ camelCase둜 톡일할 수 μžˆμŠ΅λ‹ˆλ‹€.

2. μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•˜κΈ° πŸ“¦

큰 μ»΄ν¬λ„ŒνŠΈλŠ” μž‘μ€ μ»΄ν¬λ„ŒνŠΈλ‘œ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜μ„Έμš”. μ΄λ ‡κ²Œ ν•˜λ©΄ μž¬μ‚¬μš©μ„±κ³Ό 가독성이 λ†’μ•„μ§‘λ‹ˆλ‹€.

3. μƒνƒœ 관리 λΆ„λ¦¬ν•˜κΈ° 🧠

Reduxλ‚˜ Context API 등을 μ‚¬μš©ν•  λ•Œ, μƒνƒœ 관리λ₯Ό λ³„λ„μ˜ 폴더에 λΆ„λ¦¬ν•˜μ—¬ ꡬ쑰λ₯Ό κΉ”λ”ν•˜κ²Œ μœ μ§€ν•˜μ„Έμš”.

4. ν…ŒμŠ€νŠΈ 파일 ν¬ν•¨ν•˜κΈ° πŸ§ͺ

각 μ»΄ν¬λ„ŒνŠΈλ‚˜ λͺ¨λ“ˆμ— λŒ€ν•œ ν…ŒμŠ€νŠΈ νŒŒμΌμ„ ν•¨κ»˜ 두어 ν…ŒμŠ€νŠΈ 관리λ₯Ό μš©μ΄ν•˜κ²Œ ν•˜μ„Έμš”.

5. Lint 및 Formatter μ„€μ • πŸ› οΈ

ESLint와 Prettier 같은 도ꡬλ₯Ό μ„€μ •ν•˜μ—¬ μ½”λ“œ μŠ€νƒ€μΌμ„ μΌκ΄€λ˜κ²Œ μœ μ§€ν•˜μ„Έμš”. 폴더 ꡬ쑰와 λ¬΄κ΄€ν•˜κ²Œ μ½”λ“œμ˜ ν’ˆμ§ˆμ„ 높일 수 μžˆλ‹΅λ‹ˆλ‹€!

6. λ¬Έμ„œν™” πŸ“„

폴더 ꡬ쑰와 각 ν΄λ”μ˜ 역할에 λŒ€ν•œ λ¬Έμ„œλ₯Ό μž‘μ„±ν•΄λ‘λ©΄ μƒˆλ‘œμš΄ νŒ€μ›μ΄ μ‰½κ²Œ ν”„λ‘œμ νŠΈμ— 적응할 수 μžˆμ–΄μš”. πŸ“

7. Shellμ—μ„œ 폴더 ꡬ쑰 ν™•μΈν•˜κΈ° πŸ’»

ν”„λ‘œμ νŠΈ 폴더 ꡬ쑰λ₯Ό μ‰½κ²Œ ν™•μΈν•˜λ €λ©΄ tree λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆμ–΄μš”. μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

# macOS
brew install tree

# Ubuntu
sudo apt-get install tree

μ„€μΉ˜ ν›„, ν”„λ‘œμ νŠΈ 루트 λ””λ ‰ν† λ¦¬μ—μ„œ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•΄λ³΄μ„Έμš”:

tree -L 2

-L μ˜΅μ…˜μ€ 깊이λ₯Ό μ§€μ •ν•˜λŠ” κ²ƒμœΌλ‘œ, μœ„ μ˜ˆμ œμ—μ„œλŠ” 2단계 κΉŠμ΄κΉŒμ§€μ˜ 폴더 ꡬ쑰λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€. πŸ—‚οΈ

팁: tree λͺ…λ Ήμ–΄μ˜ 좜λ ₯을 Markdown ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 ν•  수 μžˆμ–΄μš”:

tree -L 2 | pbcopy

λ³΅μ‚¬λœ λ‚΄μš©μ„ Markdown μ½”λ“œ 블둝에 λΆ™μ—¬λ„£μœΌλ©΄ 예쁘게 μ •λ¦¬λœ 폴더 ꡬ쑰λ₯Ό λΈ”λ‘œκ·Έμ— μ‚½μž…ν•  수 μžˆμŠ΅λ‹ˆλ‹€! πŸ“‹βœ¨

πŸ“š μΆ”κ°€ 팁: 폴더 ꡬ쑰 μžλ™ν™”

폴더 ꡬ쑰λ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•΄μ£ΌλŠ” ν…œν”Œλ¦Ώμ„ λ§Œλ“€μ–΄λ‘λ©΄, μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν•  λ•Œ μ‹œκ°„ μ ˆμ•½μ΄ λΌμš”. 예λ₯Ό λ“€μ–΄, yoλ‚˜ plop 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ 폴더와 νŒŒμΌμ„ μžλ™μœΌλ‘œ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. πŸš€


πŸŽ‰ λ§ˆλ¬΄λ¦¬ν•˜λ©°

μ˜€λŠ˜μ€ React + TypeScript와 Next.js ν”„λ‘œμ νŠΈμ—μ„œ ν™œμš©ν•  수 μžˆλŠ” 폴더 ꡬ쑰에 λŒ€ν•΄ 재미있고 μœ μ΅ν•˜κ²Œ μ•Œμ•„λ³΄μ•˜μ–΄μš”! πŸ₯³ μ˜¬λ°”λ₯Έ 폴더 κ΅¬μ‘°λŠ” ν”„λ‘œμ νŠΈμ˜ 성곡적인 개발과 μœ μ§€λ³΄μˆ˜μ— 큰 도움이 λœλ‹΅λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œμ νŠΈμ— λ§žλŠ” 졜적의 ꡬ쑰λ₯Ό μ°Ύμ•„λ³΄μ„Έμš”! πŸš€βœ¨

πŸ“– μ—ν”Όμ†Œλ“œ: 첫 ν”„λ‘œμ νŠΈμ˜ κ΅ν›ˆ

μ œκ°€ 처음으둜 νŒ€ ν”„λ‘œμ νŠΈλ₯Ό 진행할 λ•Œ, 폴더 ꡬ쑰가 μ—‰λ§μ΄μ–΄μ„œ λ§Žμ€ ν˜Όλž€μ„ κ²ͺμ—ˆμ–΄μš”. πŸ˜… κ·Έ κ²½ν—˜ 덕뢄에 μ§€κΈˆμ€ 항상 체계적인 폴더 ꡬ쑰λ₯Ό μœ μ§€ν•˜λ €κ³  λ…Έλ ₯ν•˜κ³  μžˆλ‹΅λ‹ˆλ‹€. μ—¬λŸ¬λΆ„λ„ μ²˜μŒλΆ€ν„° μ˜¬λ°”λ₯Έ 폴더 ꡬ쑰λ₯Ό μ„€κ³„ν•˜λ©΄ λ§Žμ€ μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆμ„ κ±°μ˜ˆμš”!

πŸ’‘ μΆ”κ°€ 자료

κΆκΈˆν•œ μ μ΄λ‚˜ 더 μ•Œκ³  싢은 λ‚΄μš©μ΄ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”. ν•¨κ»˜ 더 깊이 μžˆλŠ” 이야기λ₯Ό λ‚˜λˆ λ΄μš”! πŸ—¨οΈ

ν–‰λ³΅ν•œ μ½”λ”© λ˜μ„Έμš”! πŸ’»βœ¨

profile
🐱 λ„μΏ„μ—μ„œ ν™œλ™ν•˜λŠ” μ›Ή 개발자 πŸ‡―πŸ‡΅πŸ’» 일본 μ·¨μ—…κ³Ό κ΄€λ ¨ν•΄μ„œ 도움을 λ“œλ¦΄ 수 μžˆμ–΄μš”! ✨ κΆκΈˆν•œ μ μ΄λ‚˜ 상담이 ν•„μš”ν•˜μ‹œλ©΄ μ–Έμ œλ“ μ§€ νŽΈν•˜κ²Œ 문의 μ£Όμ„Έμš”! 😊 donghyuk65@gmail.com

2개의 λŒ“κΈ€

comment-user-thumbnail
2025λ…„ 2μ›” 7일

폴더 ꡬ쑰λ₯Ό 잘 μ„€κ³„ν•˜λ©΄, ν˜‘μ—…μ΄ μ›ν™œν•΄μ§€κ³  ν”„λ‘œμ νŠΈκ°€ μ»€μ‘Œμ„ λ•Œλ„ κ΄€λ¦¬ν•˜κΈ°κ°€ 훨씬 μ‰¬μ›Œμ§€μ£ . 기본적인 폴더 ꡬ쑰와 κΈ°λŠ₯별 및 파일 μœ ν˜•λ³„ λΆ„λ₯˜ 방식은 정말 μœ μš©ν•˜κ²Œ μ μš©ν•  수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.

특히 ν˜Όν•© 접근법을 μ‚¬μš©ν•˜μ—¬ κΈ°λŠ₯별과 파일 μœ ν˜•λ³„ λΆ„λ₯˜λ₯Ό 적절히 κ²°ν•©ν•˜λŠ” 방법이 ν˜„μ‹€μ μΈ ν”„λ‘œμ νŠΈμ—μ„œ 맀우 μœ μš©ν•  것 κ°™μ•„μš”. 곡톡 λͺ¨λ“ˆμ€ common/ 폴더에 두고, 각 κΈ°λŠ₯을 https://www.hmfusafinance.com λ…λ¦½μ μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” κ΅¬μ‘°λŠ” ν™•μž₯μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ—μ„œ 큰 μž₯점을 μ œκ³΅ν•˜κ² λ„€μš”!

1개의 λ‹΅κΈ€

κ΄€λ ¨ μ±„μš© 정보