티스토리 뷰
Nextjs14 를 사용하면서 권장하는 폴더 및 라우팅 구조는 기본적으로 App Router 를 기반으로 움직이도록 변경되었습니다.
따라서 많은 폴더 아키텍쳐들이 나오고 있는데, 여러 프로젝트를 시도하고 나서 어느정도 정리된 개인적인 Nextjs14 폴더 구조를 소개할려고 합니다.
해당 구조는 협업을 위한 구조이며, 실제로 실무에서 도입하여 현재 사용하고 있는 폴더 아키텍쳐 입니다.
구조
기본적으로 app 폴더 아래 각 도메인 별로 page.ts, layout.ts, components/, types/, hooks/* 등 각 도메인별 기능들이 한 곳에 묶여서 지원되도록 합니다. 또한, app 폴더와 같은 레벨로 사용될 공통 기능들이 모여있는 common, 다양하게 사용할 수 있는 라이브러리 레벨에 lib 폴더, 그리고 정적 리소스를 관리하는 public 폴더를 두어 아래와 같이 구조를 만듭니다.
project-root/
├── app/
│ ├── domain-1/
│ │ ├── page.ts
│ │ ├── layout.ts
│ │ ├── components/
│ │ │ ├── Component1.tsx
│ │ │ └── Component2.tsx
│ │ ├── types/
│ │ │ └── domain1Types.ts
│ │ └── hooks/
│ │ └── useDomain1Hook.ts
│ └── domain-2/
│ ├── page.ts
│ ├── layout.ts
│ ├── components/
│ │ ├── Component1.tsx
│ │ └── Component2.tsx
│ ├── types/
│ │ └── domain2Types.ts
│ └── hooks/
│ └── useDomain2Hook.ts
├── common/
│ ├── components/
│ │ └── SharedComponent.tsx
│ ├── types/
│ │ └── sharedTypes.ts
│ └── hooks/
│ └── useSharedHook.ts
├── lib/
│ ├── utils.ts
│ └── constants.ts
└── public/
├── images/
│ └── logo.png
├── fonts/
└── favicon.ico
주요 장점
다음과 같이 설계하면 여러 장점들이 생깁니다.
- 도메인 기반 모듈화 - 각 도메인별로 기능을 명확하게 분리하고, 다른 도메인과의 의존성을 줄입니다.
- 재사용 가능한 공통 컴포넌트 및 로직 - common 폴더를 사용하여 명확하게 공통화들은 나누도록 합니다.
- 명확한 파일 구조 - components, hooks, types 등 명확하게 사용할 폴더를 나누기 때문에 유지보수에 용이합니다.
- 유틸리티 및 상수 관리 - lib 폴더를 만들어서 우리가 사용할 유틸리티, 상수 등에 대한 내용을 별도로 관리하여 프로젝트에 영향이 가지 않도록 합니다.
'개발.. > Nextjs' 카테고리의 다른 글
Nextjs14 에서 서버, 클라이언트에서 URL 가져오는 방법 (0) | 2024.10.18 |
---|---|
Nextjs 에서 서버 간 통신 (서버 to 서버) 할 때 경로 관리 주의사항 (0) | 2024.09.20 |
Nextjs14 에서 SEO 최적화 (robots.txt, sitemap.xml) (0) | 2024.04.11 |
Nextjs 14 에서 환경변수 설정하기 (0) | 2024.03.14 |
Nextjs14 에서 메타 데이터 설정 방법 (0) | 2024.03.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- NUXT
- vscode
- webpack
- Git
- nuxt2
- seo
- Github Actions
- nextjs15
- 서버 to 서버
- nodejs
- 스벨트
- dockerfile
- cors
- Vite
- 티스토리챌린지
- React
- NextJS
- nextjs14
- nextjs13
- github
- svelte
- 깃허브
- docker
- 오블완
- openAI
- 타입스크립트
- vue router
- 네이버 서치 어드바이저
- Storybook
- vue composition api
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함