본문 바로가기

Next.js

Next.js 11-4 Routing Route Groups

  앱 폴더의 계층 구조는 URL 경로에 직접 매핑된다. 그러나 경로 그룹을 생성하여 이 패턴에서 벗어날 수 있다. 경로 그룹을 사용하여 다음을 수행할 수 있다. 이렇게 하면 URL 구조에 영향을 주지 않고 경로를 구성한다. 그리고 특정 경로 세그먼트를 레이아웃을 옵트인 한다. 애플리케이션을 분할하여 여러 루트 레이아웃을 만든다.

  경로 그룹은 폴더 이름을 괄호로 감싸서 생성할 수 있다.(예: (folderName))

 

  • Examples

URL 경로에 영향을 주지 않고 경로 구성

  URL에 영향을 주지 않고 경로를 구성하려면 그룹을 만들어 관련 경로를 함께 유지한다. 괄호 안의 폴더는 URL에서 생략된다.(예: (marketing) 또는 (shop)).

app --
     |
     layout.js
     (marketing) --
                  |
                  about -- (/about)
                         |
                         page.js
                  blog -- (/blog)
                        |
                        page.js
     (shop) --
             |
             account -- (/account)
                      |
                      page.js

  (marketing) 및 (shop) 내부의 경로가 동일한 URL 계층 구조를 공유하더라도 폴더 내에 layout.js 파일을 추가하여 각 그룹에 대해 다른 레이아웃을 생성할 수 있다.

app --
     |
     layout.js
     (marketing) --
                  |
                  layout.js
                  ...
     (shop) --
             |
             layout.js
             ...

 

특정 세그먼트를 레이아웃으로 선택

  특정 경로를 레이아웃으로 선택하려면 새 경로 그룹(예: (shop))을 만들고 동일한 레이아웃을 공유하는 경로를 그룹(예: account 및 cart)으로 이동한다. 그룹 외부의 경로는 레이아웃을 공유하지 않는다.(예: checkout)

app --
     |
     layout.js
     (shop) --
             |
             layout.js
             account -- (/account)
                      |
                      page.js
             cart -- (/cart)
                   |
                   page.js
     checkout -- (/checkout)
               |
               page.js

 

다중 루트 레이아웃 만들기

  여러 루트 레이아웃을 만들려면 최상위 layout.js 파일을 제거하고 각 경로 그룹 내에 layout.js 파일을 추가한다. 이것은 완전히 다른 UI 또는 경험을 가진 섹션으로 애플리케이션을 분할하는 데 유용하다. <html> 및 <body> 태그는 각 루트 레이아웃에 추가해야 한다.

app --
     |
     (marketing) --
                  |
                  layout.js
                  ...
     (shop) --
             |
             layout.js
             ...

  위의 예에서 (marketing)과 (shop) 모두 고유한 루트 레이아웃을 가진다.