1️⃣ 파일 시스템 기반의 간편한 페이지 라우팅 기능 제공.
중괄호([])
를 사용해서 동적 경로를 설정하거나, Catch All Segment(...)
를 사용해서 중첩된 모든 url 파라미터에 대응할 수 있도록 설정하는 것이 가능하다.✨ 폴더 구조만으로도 자유롭게 페이지의 라우팅 기능을 설정할 수 있다!
2️⃣ 다양한 방식의 사전 렌더링 제공.
Next는 리액트 앱이 갖는 느린 FCP라는 단점을 효과적으로 해결하기 위해 "사전 렌더링" 방식으로 동작한다.
1) SSR
2) SSG
3) ISR
1️⃣ 페이지별 레이아웃 설정이 번거로움.
위와 같이 레이아웃을 적용하길 원하는 페이지마다 레이아웃 메서드를 추가해줘야 한다. ➡️ App router에서는 간단하게 설정 가능!
2️⃣ 데이터 페칭이 페이지 컴포넌트에 집중됨.
페이지 라우터 버전의 Next 앱에서는 사전 렌더링 과정에서 불러온 데이터가 Page Component에만 props로 전달된다.
따라서 해당 컴포넌트 아래에 여러 개의 컴포넌트들이 존재한다면 데이터를 전달하는 과정이 꽤나 복잡해진다는 문제점이 존재한다.
3️⃣ 불필요한 컴포넌트들도 JS Bundle에 포함됨.
서버는 Hydration을 위해 브라우저에게 JS Bundle을 전달하는데, 이 때 불필요한 컴포넌트들도 같이 번들로 묶어서 전달한다.
이 때 불필요한 컴포넌트란❓ 상호작용 기능이 없어서 Hydration이 필요하지 않은 컴포넌트를 말한다.
❓Hydration은 왜 필요할까
HTML로만 렌더링되어있는 페이지에 Javascript를 연결해서, 사용자와의 상호작용이 가능하도록 하기 위함.
따라서 JS 파일들은 서버에서 브라우저로 JS Bundle을 전달할 때 한 번, Hydration 시 한 번, 이렇게 총 두 번 실행된다.
따라서 이러한 단점을 보완해줄 수 있는 App Router에 대해서 다음 섹션부터 공부해보자 🤓