> Что такое SPA приложение (JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: VK
Стек: JavaScript
> Пример ответа
SPA (Single Page Application) - это веб-приложение, которое загружает единственную HTML-страницу и динамически обновляет её содержимое без полной перезагрузки страницы при взаимодействии пользователя. В отличие от традиционных многостраничных приложений (MPA), где каждый переход на новый URL требует запроса к серверу и перерисовки всего DOM, SPA работает по принципу: после первоначальной загрузки все последующие изменения UI происходят на клиенте с помощью JavaScript.
Основные характеристики SPA:
- Маршрутизация на клиенте: URL меняется через History API (например,
pushState), но сервер не обрабатывает эти запросы - только отдаёт index.html. - Асинхронная загрузка данных: Используются AJAX-запросы (через
fetchилиXMLHttpRequest) для получения JSON с сервера без перезагрузки страницы. - Динамический рендеринг: DOM обновляется напрямую с помощью фреймворков (React, Vue, Angular) или нативного JavaScript.
Пример простого SPA на JavaScript:
JAVASCRIPT// Обработчик клика по ссылкеdocument.querySelectorAll('a').forEach(link => {link.addEventListener('click', (e) => {e.preventDefault();const url = link.getAttribute('href');// Изменяем URL без перезагрузкиhistory.pushState(null, '', url);// Загружаем контент асинхронноfetch(`/api/content${url}`).then(res => res.text()).then(html => {document.getElementById('content').innerHTML = html;});});});
Преимущества SPA: быстрая навигация (нет мерцания при перезагрузке), меньше нагрузки на сервер (только данные), плавный UX. Недостатки: сложность SEO (требуется SSR или prerendering), больше времени на первоначальную загрузку (из-за тяжёлого JS-бандла), проблемы с историей браузера (нужно явно управлять состоянием).
> Похожие задачи по frontend
Можно ли делать асинхронные запросы внутри редюсера Redux и почему
Как отследить момент запуска и завершения обычной функции в JavaScript
Всегда ли JavaScript выполняется после события onload
Как сделать попап без JavaScript и возможно ли это
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью