В любом ли интернет-магазине должен быть SPA

«В любом ли интернет-магазине должен быть SPA» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Не обязательно. Выбор между SPA (Single Page Application) и MPA (Multi Page Application) зависит от требований проекта:

  1. SPA подходит, если нужны:

    • Быстрые интерактивные интерфейсы (например, фильтры без перезагрузки)
    • Оффлайн-функциональность (PWA)
    • Сложный клиентский стейт (корзина, избранное)
  2. MPA лучше для:

    • SEO (хотя современные SPA решают это с SSR)
    • Простых магазинов с минимумом динамики
    • Быстрого первого рендера (меньше JS)

Пример с Next.js (гибридный подход):

// Страница товара (SSR для SEO)
export async function getServerSideProps() {
  const res = await fetch('https://api/products/123');
  return { props: { product: await res.json() } };
}

// Корзина (клиентский стейт)
const Cart = () => {
  const [items, setItems] = useState([]);
  // ...
}

Вывод: SPA не обязателен, но полезен для сложных кейсов. Для небольших магазинов MPA может быть проще в поддержке.