apis : API 호출 함수assets : font, icon 등components : UI 컴포넌트constants : 상수 정의hooks : 로직stores : 상태 관리styles : 글로벌 스타일 및 테마 정의types : 타입 정의utils : 유틸리티 함수
확장성을 고려해, 페이지가 복잡해져도 디렉토리 구조를 변경하지 않고 확장되도록 설계한다.
중첩 경로를 대비한 구조를 설계해, 하위 페이지를 추가해도 기존 구조를 유지할 수 있다.
예시
<aside> <img src="/icons/close_red.svg" alt="/icons/close_red.svg" width="40px" />
pages에 index 폴더가 없을 경우초기 상태
pages/trip/detail/
components/
hooks/
utils/
index.tsx
확장 시 (하위에 SamplePage 추가)
pages/trip/detail/
components/
hooks/
utils/
index.tsx
**SamplePage.tsx**
SamplePage 파일과 detail 페이지 관련 파일이 같은 디렉토리에 혼재<aside> <img src="/icons/circle_blue.svg" alt="/icons/circle_blue.svg" width="40px" />
pages에 index 폴더가 있을 경우초기 상태
pages/trip/detail/
index/
components/
hooks/
utils/
index.tsx
확장 시 (하위에 SamplePage 추가)
pages/trip/detail/
index/
components/
hooks/
utils/
index.tsx
sample/
components/
hooks/
utils/
index.tsx
detail과 하위인 sample 페이지의 역할이 명확히 분리되어 구조적인 문제가 없음pages/trip/detail/index/
components/
TripDetailHeader.tsx
TripDetailHeader.test.tsx
TripDetailHeader.stories.tsx
TripDetailFooter.tsx
TripDetailFooter.test.tsx
hooks/
useTrip.ts
useTrip.test.ts
utils/
formatTripDetail.ts
formatTripDetail.test.ts
index.tsx