IT동아리 DDD에서 프로젝트를 진행하면서 새롭게 Next.js (app router)
를 도입했다.
파일구조를 설계할 때, 라우팅 자체는 파일 시스템에 의해 정해지는 부분이라 가장 큰 틀은 정해져 있지만
각 페이지 안에 사용되는 컴포넌트들은 어떻게 관리를 해야 할지 고민이 많았고,
다음과 같이 설계를 해 보았다.
/app
공통 컴포넌트
|->app/_components/_modules
app/_components/_elements -|
|->app/_components/home/_components
|->app/_components/feedback/_components
app폴더 전역에서 사용되는 공통 커스텀 훅
app폴더 전역에서 사용되는 공통 유틸 함수
app폴더 전역에서 사용되는 svg아이콘
/app/각 라우팅 폴더
해당 폴더에서 사용되는 공통 컴포넌트
home에서 사용되는 공통 커스텀 훅
home에서 사용되는 공통 유틸 함수
home에서 사용되는 svg아이콘
types
전역적으로 사용되는 타입들
config
styles
공통 컴포넌트 스타일 및 스타일 변수
service
백엔드 api요청 메소드 (queryFn 적용 대상)
client
클라이언트 컴포넌트에서 사용하는 api 메소드
server
서버 컴포넌트에서 사용하는 api 메소드
// service 폴더명 컨벤션
(get) user/info/{{id}}
(post) user/info
⇒ user.tsx
EX)
_component, _lib, _hooks, _svgs 들은
항상 공통 범위의 폴더에 생성한다.
EX)
/home
URL에서 사용되는 A 컴포넌트
이후 /feedback
URL에서도 A 컴포넌트를 사용
(= /home , /feedback 둘다 A컴포넌트가 사용 됨을 의미)