Использовал ли ты Next.js?
Что проверяют
Был ли у вас реальный проект и понимаете ли вы, какую задачу решает Next.js, а не только список фич. Следом почти всегда спрашивают, на каком роутере вы работали и как выбирали способ рендеринга для конкретной страницы.
Как отвечать
Начните с фактов: версия, роутер, что за продукт, ваша роль. Затем ваши решения:
- App Router или Pages Router: в App Router компоненты по умолчанию серверные, клиентские помечаются
"use client", данные загружаются прямо в асинхронном компоненте.getServerSidePropsиgetStaticPropsсуществуют только в Pages Router; - стратегия рендеринга: статика, ISR через
revalidate, динамический рендер на каждый запрос. Объясните выбор: каталог статический с перегенерацией, личный кабинет динамический; - кеширование:
revalidatePath,revalidateTag, Server Actions для форм. В 15-й версииfetchперестал кешироваться по умолчанию, аcookies(),headers()иparamsстали асинхронными; в 16-й Turbopack стал сборщиком по умолчанию, аmiddleware.tsпереименован вproxy.ts; - оптимизация:
next/image,next/font,next/dynamicдля тяжёлых библиотек; - деплой: Vercel или свой сервер с
output: "standalone"в Docker.
Расскажите одну реальную проблему с цифрами. Например, вызов cookies() в общем layout сделал динамическими все страницы раздела, и после выноса персонализации на клиент время ответа упало с N до M мс. Цифры должны быть ваши.
Если с Next.js не работали, скажите прямо: «В проде нет, пишу на React с Vite». Добавьте, что понимаете про серверные компоненты и рендеринг, или покажите учебный проект на App Router. Честное «нет, но вот что я знаю» лучше выдуманного интернет-магазина.
Где спотыкаются
Смешивают роутеры: рассказывают про getServerSideProps в проекте на App Router. Это выдаёт устаревший или пересказанный опыт.
Говорят, что SSR всегда быстрее. Рендер на каждый запрос нагружает сервер и увеличивает время до первого байта, а страницы, одинаковые для всех, выгоднее генерировать статически.
Лечат ошибки гидратации через suppressHydrationWarning, вместо того чтобы найти расхождение сервера и клиента, например Date.now() или обращение к window при рендере.