В чем особенности одностраничного сайта
Что проверяют
Понимаете ли вы, какую цену продукт платит за клиентскую отрисовку и как её снижают. Иногда под «одностраничным сайтом» имеют в виду лендинг с якорными ссылками, поэтому уточните, о чём речь, и переходите к SPA. Следом спрашивают про SEO и про то, когда вы бы выбрали SSR.
Как отвечать
SPA это приложение, где браузер один раз загружает HTML-оболочку и бандл, а дальше экраны рисует JavaScript:
- клиентская маршрутизация: History API (
pushState, событиеpopstate), роутер вроде React Router или Vue Router меняет URL без перезагрузки; - данные отдельно от разметки: запросы к API через
fetch, кеширование в TanStack Query или аналогах; - долгоживущее состояние: стор и соединения живут между переходами.
Плюсы: быстрые переходы после первой загрузки, сохранение состояния, меньше трафика, чёткое разделение фронтенда и бэкенда.
Минусы стоит назвать конкретно:
- первая загрузка: пустой HTML, пока бандл не скачан и не выполнен, страдают LCP и INP. Лечится разбиением кода (
import(),React.lazy) и предзагрузкой; - SEO и превью: Google рендерит JavaScript, но с задержкой, боты соцсетей обычно нет, поэтому мета-теги Open Graph должны быть в исходном HTML;
- HTTP-статусы: сервер отдаёт
index.htmlна любой путь, настоящий 404 без серверной части не отдать; - доступность: после смены маршрута нужно переводить фокус, сообщать скринридеру о новой странице, восстанавливать прокрутку;
- утечки памяти: забытые подписки и таймеры копятся, пока вкладка открыта.
Итог: для кабинетов и внутренних инструментов SPA подходит отлично, для контентных страниц берут SSR или статическую генерацию в Next.js, Nuxt, Astro.
Где спотыкаются
Называют офлайн-режим свойством SPA. Офлайн даёт Service Worker, это уже PWA, и он работает на любом сайте.
Утверждают, что SPA не индексируется совсем. Это устарело, но проблемы с индексацией и превью реальны, и их надо уметь описать.
Забывают про сервер: без правила, отдающего index.html на все пути, прямой заход по глубокой ссылке вернёт 404.