1. Page Router
- 특징 : Page 컴포넌트는 각각의 페이지를 정의하는 데 사용됩니다. 각 페이지는 고유한 경로를 가지며 해당 경로로 사용자가 이동할 때마다 렌더링됨
- 장점 :
- 각 페이지에 대해 고유한 레이아웃 및 동작을 정의할 수 있음
- 페이지마다 필요한 데이터를 가져오고 렌더링할 수 있음
- 필요에 따라 동적 라우팅을 구현할 수 있음
- 단점 :
- 페이지 간의 공통된 레이아웃을 관리하기 위해 추가적인 노력이 필요할 수 있음
- 페이지마다 코드 중복이 발생할 수 있음
2. App Router
- 특징 : App 컴포넌트는 전체 애플리케이션의 레이아웃을 정의하는 데 사용됩니다. 일반적으로 모든 페이지에서 공통되는 레이아웃, 머리글, 바닥글 등을 포함됨
- 장점 :
- 전역 상태 관리 또는 레이아웃 관리를 위해 사용할 수 있음
- 모든 페이지에 반복되는 레이아웃을 정의하여 코드 중복을 방지함
- 레이아웃 변경이 필요한 경우 한 곳에서 변경할 수 있음
- 단점 :
- 모든 페이지가 동일한 레이아웃을 공유해야 할 필요는 없으므로 일부 페이지에서는 적합하지않음
- 모든 페이지가 App 컴포넌트에 의해 렌더링되므로 큰 애플리케이션의 경우 성능에 영향을 줄 수 있음
3. 차이점
- App 컴포넌트는 전체 애플리케이션의 레이아웃을 정의하고 전역 상태를 관리하는 데 사용됨
- Page 컴포넌트는 각 페이지의 고유한 레이아웃과 동작을 정의하며 해당 페이지를 렌더링하는 데 사용됨
- 애플리케이션의 구조와 요구 사항에 따라 두 가지 컴포넌트를 적절히 조합하여 사용하시길
4. Next.js에서는?
- Next.js에서는 주로 Page 컴포넌트를 사용하는 것이 좀더 나을지도?
- 유연성: Page 컴포넌트를 사용하면 각 페이지의 고유한 레이아웃 및 동작을 정의할 수 있고, 이는 다양한 페이지 간에 레이아웃이나 동작이 다를 때 특히 유용함
- 성능: 모든 페이지가 동일한 레이아웃을 공유할 필요가 없을 때, App 컴포넌트 대신 Page 컴포넌트를 사용하여 불필요한 코드의 중복을 피할 수 있고, 또한 각 페이지가 개별적으로 렌더링되므로 성능 측면에서 효율적임
- 코드 관리: 페이지마다 필요한 레이아웃 및 동작을 개별적으로 관리할 수 있고, 이는 코드의 유지보수와 디버깅을 쉽게 만들어줌.
- 그러나 경우에 따라서는 App 컴포넌트를 사용하는 것이 적절할 수도 있는데
예를 들어, 모든 페이지가 동일한 레이아웃을 공유하고 상태를 전역으로 관리해야 하는 경우에는 App 컴포넌트가 유용할 수 있음, 따라서 애플리케이션의 구조와 요구 사항에 따라 적절한 선택을 해야 함
'Frontend > Next' 카테고리의 다른 글
"Warning: Prop `className` did not match" 에러 이유 및 해결방법 (0) | 2024.04.19 |
---|