Next.js
Экспресс-шпаргалка 20/20
- App Router использует nested layouts, server components и file-based conventions нового поколения по сравнению с Pages Router.
- Server Components рендерятся на сервере и уменьшают JS в браузере; Client Components нужны для интерактивности и browser API.
- SSR - динамика/персонализация, SSG - статический контент, ISR - периодическое обновление pre-rendered страниц.
- Кэш в Next управляется на уровне fetch/route/page и контролируется revalidate/tag/path invalidation.
- Route Handlers - это серверные HTTP endpoints внутри app router, удобны для BFF сценариев.
- Hydration mismatch происходит, когда серверный HTML не совпадает с клиентским рендером.
- loading/error states реализуются через
loading.js,error.jsи Suspense boundaries. - Dynamic rendering нужен при request-time данных, static - когда данные стабильны и важна скорость/SEO.
generateMetadataформирует SEO-метаданные на сервере и должен учитывать data freshness.- Оптимизация media:
next/image,next/font, контроль размеров и preload критических ассетов. - Границы server/client нужно держать явными через
use clientи не импортировать server-only код в клиент. - Server Actions - серверные мутации рядом с UI, но требуют проверки прав и безопасной обработки ошибок.
- Авторизацию в Next обычно строят через middleware + server-side проверки + secure cookies.
- TTFB/LCP улучшают через кэш, streaming, уменьшение blocking fetch и оптимизацию critical path.
- BFF в Next подходит для умеренной сложности; при росте домена лучше выделенный backend.
- Edge/runtime дает меньшую latency ближе к пользователю, но имеет ограничения по API окружения.
- Глобальный state без boundaries усложняет hydration и увеличивает стоимость ререндеров.
- Инвалидация кэша после мутаций делается через revalidatePath/revalidateTag и явные правила freshness.
- i18n в Next проектируют через локализованные маршруты, словари и корректные SEO alternate links.
- Частые anti-patterns: смешивание server/client, отсутствие cache strategy и переизбыток client components.
1. Что изменилось в App Router по сравнению с Pages Router?
Теги: nextjs, react
Сложность: Middle/Senior
Короткий ответ
App Router использует nested layouts, server components и file-based conventions нового поколения по сравнению с Pages Router.
Что сказать на интервью (30-60 секунд)
- Где это применяется: Критично для продуктовых web-приложений с SEO, персонализацией и требованиями к скорости рендера.
- Главный риск: Неверная стратегия рендера и кэша в Next.js быстро приводит к росту TTFB/LCP и нестабильному UX.
- Как проверяете решение: Проверяю целевой сценарий под slow network/CPU throttling и подтверждаю улучшение цифрами, а не ощущением.
Мини-пример
export const dynamic = 'force-dynamic';
export default async function Page() {
const res = await fetch('https://api.example.com/data', { cache: 'no-store' });
const data = await res.json();
return <main>{data.length}</main>;
}
Углубление (2-3 минуты)
- Свяжите тему "Что изменилось в App Router по сравнению с Pages Router?" с одним production-сценарием и объясните, почему она влияет на результат.
- Сравните поведение на быстром и медленном устройстве/сети.
- Сформулируйте ключевой trade-off и объясните, как решение масштабируется на уровне системы.