foundation
Dynamic routes
Моделируйте route parameters, catch-all segments, static params, состояния not-found и canonical URL.
Dynamic segments — папки в скобках: `[slug]`, catch-all `[...slug]`, optional `[[...slug]]`. Params приходят строками — валидируйте и сужайте тип перед использованием. `generateStaticParams` предсобирает пути для SSG; отсутствие — `notFound()`.
// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
const posts = await getPosts();
return posts.map((p) => ({ slug: p.slug }));
}
Canonical URL важны для SEO при нескольких путях к похожему контенту — metadata и redirects осознанно.
На интервью: static param generation, доступ к params в runtime, 404 против пустого состояния.
Типовые ошибки: невалидированные params в запросах, неограниченные static paths на build, дубликаты без canonical.
Компромисс: гибкость URL против стоимости build и риска дубликатов в индексе.
Чеклист:
- Валидируйте params до доступа к данным.
- generateStaticParams для известных каталогов.
- notFound для отсутствующих ресурсов.
- Canonical metadata для алиасов.