본문 바로가기
nextjs/next 14 공식 문서 부시기

[next 14 공식문서 부시기] 2.1 Page & Layout

by spare8433 2024. 1. 13.

Pages

 

page.js 파일에서 컴포넌트를 구성해 페이지를 정의하고 해당 경로에 맞게 접근할 수 있습니다.



page.js special file



Layouts

 

layout.js 파일을 정의해 여러 페이지에서 공유되는 UI 를 구성할수 있습니다. 레이아웃은 상태를 유지하며 다시 렌더링되지 않습니다. 레이아웃은 중첩될 수도 있습니다.



layout.js special file

children props 를 통해 하위 레이아웃(존재하는 경우) 또는 하위 페이지로 채워집니다.

 

  • layout.jspage.js 파일을 동일한 폴더에 정의할 수 있습니다. 레이아웃이 페이지를 감싸게 됩니다.
  • app 디렉토리에 최상위 레이아웃을 루트 레이아웃이라고 하며 <html><body> 태그를 정의해 사용해야 합니다. 이 레이아웃은 필수이며 애플리케이션의 모든 페이지에서 공유됩니다.
  • 모든 경로 세그먼트는 선택적으로 자체 레이아웃을 정의할 수 있습니다.
  • ※ 헤더 설정 가능 (<title><meta>와 같은 <head> 태그를 루트 레이아웃에 수동으로 추가하면 안 됩니다.)
  • js 뿐 아니라 js, ts, tsx 형식 사용 가능



Templates

 

템플릿은 각 하위 레이아웃이나 페이지를 래핑한다는 점에서 레이아웃과 유사합니다. 경로 전반에 걸쳐 지속되고 상태를 유지하는 레이아웃과 달리 템플릿은 탐색 시 각 하위 항목에 대해 새 인스턴스를 만듭니다.

 

  • 특정 양식이 가변적인 조건에 따라 필요로 할 때 사용
  • 중첩 측면에서 template.js는 레이아웃과 해당 하위 항목 사이에 렌더링됩니다.



template.js special file



<Layout> {/* Note that the template is given a unique key. */} 
  <Template  key={routeParam}>{children}</Template>
</Layout>




참고

https://nextjs.org/docs