Next 12 -> 14 로의 업데이트에서 주요한 변경 사항은
Page Router 방식에서 App Router 방식으로의 변화가 있었다는 점이다.
- Next.js 12: 기존의 Page Router 기반
- Next.js 13: 새로운 App Router 도입
- Next.js 14: App Router 안정화 및 완성도 향상
- pages 디렉토리를 기반으로 동작
- 파일 생성이 URL 정의가 되는 방식
- _app.tsx 에서 공통 레이아웃 핸들링
파일 생성 - URL 정의
pages/
├── index.js → /
├── login.js → /login
└── blog/[id].js → /blog/:id
- app디렉토리를 기반으로 동작
- React Server Components (RSC)를 기본으로 사용.
- 페이지 단위뿐만 아니라 레이아웃 단위도 파일로 세분화 가능
- 각 디렉토리별로 독립적인 레이아웃을 지정할 수 있어 구조적이고 명확한 UI 구성이 가능
파일 생성 - URL 정의
app/
├── page.js → /
├── login/
│ └── page.js → /login
├── blog/
│ └── [id]/
│ └── page.js → /blog/:id
pages/
├── _app.js (전체 앱 레이아웃) - 로그인만 다르게 처리할 경우 추가 설정 필요
├── login/
│ └── index.js (로그인 메인 페이지)
if (isLoginView) {
return <LoginLayout>{children}</LoginLayout>
}
return (
<>
<Nav type={navType} scrollanimation={navScrollAnimation} />
{children}
<Footer />
</>
)
app/
├── layout.tsx (전체 앱 레이아웃)
├── login/
│ ├── layout.tsx (로그인 전용 레이아웃)
│ └── page.tsx (로그인 메인 페이지)
각 페이지에서 SSR, SSG, ISR(증분 정적 생성) 등을 통해 데이터 패칭 전략을 서버/빌드 단에서 명시적으로 구성
getServerSideProps, getStaticProps, fetch, cache 등 통합적으로 관리 가능