Frontend/Next

"Page Router" vs "App Router"

개발작 2024. 4. 11. 18:37

1. Page Router

  • 특징 : Page 컴포넌트는 각각의 페이지를 정의하는 데 사용됩니다. 각 페이지는 고유한 경로를 가지며 해당 경로로 사용자가 이동할 때마다 렌더링됨
  • 장점 :
    1. 각 페이지에 대해 고유한 레이아웃 및 동작을 정의할 수 있음
    2. 페이지마다 필요한 데이터를 가져오고 렌더링할 수 있음
    3. 필요에 따라 동적 라우팅을 구현할 수 있음
  • 단점 :
    1. 페이지 간의 공통된 레이아웃을 관리하기 위해 추가적인 노력이 필요할 수 있음
    2. 페이지마다 코드 중복이 발생할 수 있음

2. App Router

  • 특징 : App 컴포넌트는 전체 애플리케이션의 레이아웃을 정의하는 데 사용됩니다. 일반적으로 모든 페이지에서 공통되는 레이아웃, 머리글, 바닥글 등을 포함됨
  • 장점 :
    1. 전역 상태 관리 또는 레이아웃 관리를 위해 사용할 수 있음
    2. 모든 페이지에 반복되는 레이아웃을 정의하여 코드 중복을 방지함
    3. 레이아웃 변경이 필요한 경우 한 곳에서 변경할 수 있음
  • 단점 :
    1. 모든 페이지가 동일한 레이아웃을 공유해야 할 필요는 없으므로 일부 페이지에서는 적합하지않음
    2. 모든 페이지가 App 컴포넌트에 의해 렌더링되므로 큰 애플리케이션의 경우 성능에 영향을 줄 수 있음

3. 차이점 

  • App 컴포넌트는 전체 애플리케이션의 레이아웃을 정의하고 전역 상태를 관리하는 데 사용됨
  • Page 컴포넌트는 각 페이지의 고유한 레이아웃과 동작을 정의하며 해당 페이지를 렌더링하는 데 사용됨
  • 애플리케이션의 구조와 요구 사항에 따라 두 가지 컴포넌트를 적절히 조합하여 사용하시길

4. Next.js에서는?

  • Next.js에서는 주로 Page 컴포넌트를 사용하는 것이 좀더 나을지도?
  1. 유연성: Page 컴포넌트를 사용하면 각 페이지의 고유한 레이아웃 및 동작을 정의할 수 있고, 이는 다양한 페이지 간에 레이아웃이나 동작이 다를 때 특히 유용함
  2. 성능: 모든 페이지가 동일한 레이아웃을 공유할 필요가 없을 때, App 컴포넌트 대신 Page 컴포넌트를 사용하여 불필요한 코드의 중복을 피할 수 있고, 또한 각 페이지가 개별적으로 렌더링되므로 성능 측면에서 효율적임
  3. 코드 관리: 페이지마다 필요한 레이아웃 및 동작을 개별적으로 관리할 수 있고, 이는 코드의 유지보수와 디버깅을 쉽게 만들어줌.
  • 그러나 경우에 따라서는 App 컴포넌트를 사용하는 것이 적절할 수도 있는데
    예를 들어, 모든 페이지가 동일한 레이아웃을 공유하고 상태를 전역으로 관리해야 하는 경우에는 App 컴포넌트가 유용할 수 있음, 따라서 애플리케이션의 구조와 요구 사항에 따라 적절한 선택을 해야 함