Имена файлов и маршруты Next.js
В Next.js App Router имена специальных файлов и каталогов являются контрактом маршрутизации: page, layout, loading, error, not-found, route и динамические сегменты имеют заданное значение.
Плохо
app/orders/Page.tsx # переименован из page.tsx ради PascalCase
app/orders/Route.ts # framework contract потерян
export function get() {} # не экспорт HTTP GET в route.ts
Хорошо
app/orders/page.tsx: export default function OrdersPage() { ... }
app/orders/layout.tsx: export default function OrdersLayout({ children }) { ... }
app/api/orders/route.ts: export async function GET(request) { ... }
app/orders/[orderId]/page.tsx: динамический segment по контракту Next.js
Обычный компонент InvoiceCard: отдельный файл по соглашению проекта.
Почему это важно
Имена специальных файлов управляют обнаружением маршрутов; общий стиль идентификаторов не может менять API фреймворка.
Когда применять
Next.js App Router 16.x; документация структуры с отображаемой версией 16.4.6 проверена 2026-11-13. Примеры — схема размещения, многоточия не являются готовым TSX. Pages Router и предыдущие версии имеют свои conventions; это правило не требует мигрировать существующее приложение.
Подробные условия
Сохраняй их написание и поддерживаемое расширение; PascalCase применяется к имени компонента, а не к замене page.tsx на Page.tsx.
Обычные файлы организуй по принятому соглашению; не создавай специальные файлы, пока они не нужны маршруту. Для route.ts имена HTTP-методов экспортируются по API Next.js; обычные внутренние функции остаются camelCase. Учитывай версию: в 16.x используется convention proxy, а перенос старого middleware выполняется по руководству миграции и проверкам поведения, не простым массовым переименованием.
Кто что делает
Человек
Выбирает структуру обычных файлов и принимает миграцию версии.
AI-агент
Сверяет специальные имена с установленной Next.js, сохраняет PascalCase символов и проверяет обнаружение маршрута сборкой/запросом.
Как проверить у себя
- page.tsx с OrdersPage → собрать и запросить маршрут → страница обнаружена.
- Файл заменен на Page.tsx либо get вместо GET → проверить маршрут → ошибка выявлена до публикации.
- Переход с предыдущей версии → проверить руководства и маршрутные проверки → поддерживаемые имена и поведение подтверждены без слепой замены.
Первоисточники
- Next.js App Router: Project Structure — Routing files and organization; fixed names are framework contracts.
- Next.js App Router: Route Handlers — HTTP method exports, route file convention and version history.
Дата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.