Back to Blog

Маршрутизация (routing) в Next.js

Anastasiia Berest 4 min read

1️⃣ Группировка сегментов: (group)

app/
- (dashboard)/
-- analytics/
--- page.tsx → /analytics
-- settings/
--- page.tsx → /settings

✅ URL-адреса: /analytics, /settings

❌ НЕ будет /dashboard/analytics

2️⃣ Динамические маршруты: [param], […param], [[…param]]

Обычный параметр [id]/page.tsx → /product/123

Массив параметров […filters]/page.tsx → /search/red/shoes/42

Необязательный путь [[…slug]]/page.tsx → /, /a, /a/b

app/
- products/
-- [...filters]/
--- page.tsx
✅ /products/red/shoes → ["red", "shoes"]

3️⃣ @segment — маркер “параллельного маршрута”

Используется в layout’ах, чтобы указывать вложенные или параллельные области (outlets), аналогично React Router.

app/
-- layout.tsx
-- @admin/
--- dashboard/
---- page.tsx → рендерится в "admin" слот
-- @user/
--- dashboard/
---- page.tsx → рендерится в "user" слот

layout.tsx


export default function RootLayout({ children, admin, user }) {
 return (
   <div>
     <div>{admin}</div>
     <div>{user}</div>
     <main>{children}</main>
   </div>
 );
}

🔧 Полезно, когда нужно показывать разные интерфейсы в параллельных слотах — админку и клиентский интерфейс, например

4️⃣ Специальный маршрут (Intercepting routes ): (.)route, (..)route, (..)(..)route, (…)route

(.) означает: использовать тот же путь, что и родитель, но как вложенный layout или страница.

app/
- dashboard/
-- page.tsx → /dashboard
-- (.)settings/
--- page.tsx → /dashboard/settings (но без влияния на layout)

(.) позволяет создать маршрут, не влияя на родительский layout.

(.) to match segments on the same level

(..) to match segments one level above

(..)(..) to match segments two levels above

(…) to match segments from the root app directory

📚 Заключение

- (group) Группировка файлов, не влияет на URL

- [slug] Динамический сегмент

- […slug] Массив сегментов (catch-all)

- [[…slug]] Необязательный путь

- @segment Параллельный маршрут для layout

- (.)segment Подстраница без влияния на родительский layout (Intercepting routes)

Anastasiia Berest

Anastasiia Berest

Senior Web UI Engineer

I'm a web development passionate about creating meaningful digital experiences.