app
폴더의 계층 구조는 URL 경로와 직접 매핑된다. 그러나 라우트 그룹을 생성하여 이러한 패턴을 벗어날 수 있다. 라우트 그룹은 괄호로 폴더 이름을 감싸면 생성
할 수 있다. (폴더이름)
라우트 그룹은 다음과 같은 용도로 사용할 수 있다.
예시
URL에 영향을 주지 않고 라우트를 구성하려면, 관련된 라우트를 함께 유지하기 위해 그룹을 만든다. 괄호 안의 폴더는 URL에서 생략된다. ( 예: (marketing)
또는 (shop)
)
(marketing)
및 (shop)
내부의 경로들이 동일한 URL 계층 구조를 공유하더라도, 각 그룹에 대해 다른 레이아웃을 생성할 수 있다. 이를 위해 해당 폴더 내에 layout.js
파일을 추가한다.
특정 라우트를 레이아웃에 포함하려면, 새로운 라우트 그룹을 생성하고 ( 예: (shop)
) 동일한 레이아웃을 공유하는 라우트를 해당 그룹으로 이동시킨다 ( 예: account
와 cart
).
그룹 외부의 라우트는 레이아웃을 공유하지 않는다. ( 예: checkout
).
여러 개의 루트 레이아웃을 생성하려면 최상위 레벨의 layout.js
파일을 제거하고 각 라우트 그룹 내에 layout.js
파일을 추가한다. 이는 완전히 다른 UI 또는 경험을 가진 섹션으로 애플리케이션을 분할하는 데 유용하다. <html>
및 <body>
태그를 각 루트 레이아웃에 추가해야 한다.
아래 예시에서 (marketing)
과 (shop)
모두 자체적인 루트 레이아웃을 갖고 있다.
(marketing)/about/page.js
와 (shop)/about/page.js
는 둘 다 /about
으로 해결되어 오류가 발생한다.app/(shop)/layout.js
를 사용하는 /cart
에서 app/(marketing)/layout.js
를 사용하는 /blog
로 이동하는 경우 전체 페이지 로드가 발생한다. 이는 여러 개의 루트 레이아웃에만 해당한다.[출처]
https://nextjs.org/docs/app/building-your-application/routing/route-groups