Веб-приложения: SPA, MPA, PWA
Веб-приложение работает в веб-браузере и, в отличие от сайтов, интерактивное и может выполнять задачи как десктопные приложения.
SPA (Single Page Application)
SPA — одностраничное веб-приложение, где основное взаимодействие с пользователем происходит на одной странице. Контент обновляется динамически, без полной перезагрузки страницы.
Применение
- Социальные сети
- Почтовые клиенты
- Административные панели
Зачем нужно
- Для быстрого и плавного пользовательского опыта
- Минимальное время загрузки
Из чего состоит
- Клиентская часть (HTML, CSS, JavaScript)
- Фреймворки и библиотеки (React, Angular, Vue.js)
- API для взаимодействия с сервером
Как работает
- Загрузка начальной HTML-страницы
- Загрузка CSS и JavaScript файлов
- Инициализация фреймворка/библиотеки
- Запросы к API для получения данных
- Динамическое обновление DOM с использованием данных из API
- Обновление URL и состояния приложения без перезагрузки страницы
Плюсы и минусы
Плюсы:
- Быстрая загрузка после первого запроса (кэширование ресурсов и данных)
- Плавные переходы между разделами (виртуальный DOM, клиентская маршрутизация)
- Меньшая нагрузка на сервер (меньше запросов)
Минусы:
- Усложнённая индексация поисковыми системами
- Длительное время начальной загрузки
- Требуются дополнительные инструменты для настройки маршрутизации и управления состоянием
Примеры: Яндекс.Почта, ВКонтакте
Интеграция
- REST API, GraphQL для взаимодействия с сервером
- Веб-сокеты для работы в реальном времени
MPA (Multi Page Application)
MPA — многостраничное веб-приложение, где каждая страница загружается отдельно с сервера.
Применение
- Сайты с большим количеством контента
- Новостные порталы
- Интернет-магазины
Зачем нужно
- Лучшая интеграция с SEO (уникальный URL у каждой страницы)
Из чего состоит
- Серверная часть (бэкэнд на PHP, Python, Java и т. д.)
- Клиентская часть (HTML, CSS, JavaScript)
- Система маршрутизации
Как работает
- Пользователь переходит по URL
- Сервер обрабатывает запрос и возвращает HTML-страницу
- Браузер загружает и отображает страницу
- При переходе на другую страницу процесс повторяется
- Дополнительные данные могут загружаться через AJAX-запросы
Плюсы и минусы
Плюсы:
- Простая SEO-оптимизация (каждая страница имеет свой статический контент)
- Чёткая структура и маршрутизация
- Простая архитектура
Минусы:
- Более длительное время загрузки при переходах (каждый переход требует запроса к серверу)
- Высокая нагрузка на сервер из-за частых запросов
Примеры: Озон, сайт РБК
Интеграция
- REST API для взаимодействия с сервером
- Встраивание iframe для отдельных модулей