site_logo

Single Page Application

Highload

Обновлено: 27 сентября 2024

    Каждый год темпы жизни набирают обороты. Нарастание скорости происходит везде, в том числе и в бизнесе. Компании находятся в постоянной конкурентной гонке. Тот, кто быстрее реагирует на происходящие изменения, в итоге занимает лидирующие позиции.

    Компании стремятся автоматизировать бизнес-процессы. Раньше это осуществлялось с помощью десктопных приложений. Сейчас на смену им всё чаще приходят веб-приложения, которые без проблем функционируют на всех устройствах, базируются в облаке и удобны для пользователя.

    Существует два способа разработки веб-приложений: одностраничные приложения (Single Page Application, SPA) и многостраничные приложения (Multi Page Application, MPA).

    Одностраничные приложения работают в рамках браузера и не требуют постоянного обновления страницы или загрузки дополнительных страниц во время использования. Например, Google Maps и Facebook являются одностраничными приложениями.

    Многостраничные приложения имеют более традиционную архитектуру. При каждом запросе пользователя страница полностью перезагружается, обновляются все данные. Скорость и производительность снижаются из-за затрат на отображение одних и тех же элементов. Поэтому для крупных корпоративных систем данный подход не подходит.

    Загрузка нового контента в MPA и SPA
    Загрузка нового контента в MPA и SPA

    Чтобы обеспечить необходимую скорость работы, в ESM-системе SimpleOne используется SPA.

    Принцип работы SPA

    В SPA архитектура устроена таким образом, что при загрузке первой страницы с сервера на компьютер передаётся весь необходимый для работы код (HTML, CSS и JavaScript). Далее контент подгружается и обновляется без перезагрузки страницы.

    После загрузки первой страницы всё взаимодействие с сервером происходит через запросы AJAX. Запросы AJAX возвращают данные в формате JSON. При этом формирование вёрстки страницы происходит на стороне клиента.

    Следующий рисунок показывает архитектурную разницу между подходами MPA и SPA.

    Принцип работы MPA и SPA
    Принцип работы MPA и SPA. Источник: docs.microsoft.com

    При отправке данных приложения в формате JSON создаётся разделение между презентацией (разметка HTML) и логикой приложения (запросы AJAX плюс ответы JSON). Такое разделение упрощает проектирование и развитие каждого слоя.

    В хорошо спроектированном SPA есть возможность изменить HTML-разметку, не касаясь кода, реализующего логику приложения. Например, в SimpleOne пользователи могут настраивать собственные представления данных. Изменения представлений происходят на стороне клиента, персональные настройки кешируются в памяти устройства.

    Получается, что при первой загрузке страницы представление данных загружается с сервера, далее пользователь получает представление данных из кеша. С сервера передаются сами данные.

    Преимущества SPA

    Более высокая производительность

    Нагрузка на сервер снижается за счёт двух факторов:

    1. SPA не перезагружает всю страницу, а только подгружает запрашиваемые данные.
    2. В отличие от MPA в SPA вёрстка обрабатывается устройством клиента, а не сервером.

    Более позитивный опыт взаимодействия c пользователем

    Приложение более гибкое и отзывчивое. Контент размещается на одной странице, поэтому пользователю не приходится ждать загрузки других страниц. Реакция приложения на пользовательские действия в большинстве случаев мгновенная.

    Универсальность

    Функционируют как на персональных компьютерах, так и на мобильных устройствах при наличии доступа к интернету.

    Teхнологии и фреймворки, которые мы используем

    HTML/CSS — языки, используемые для разметки и описания внешнего вида веб-страниц.

    JavaScript — язык программирования, который используется для придания интерактивности приложениям.

    React — одна из самых популярных библиотек JavaScript для разработки пользовательских интерфейсов. React используется для разработки одностраничных и мобильных приложений. Преимуществами библиотеки являются гибкость и возможность простой интеграции с другими библиотеками.

    AJAX — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в фоновом обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся быстрее и удобнее.

    Кеширование — технология, которая позволяет увеличивать производительность веб-приложений за счёт использования сохранённых ранее данных. Благодаря кешированию приложения работают значительно быстрее и обходятся дешевле при больших масштабах.

    Заключение

    SPA — современный стандарт разработки, который используется в том числе и в современных ESM-системах. Использование технологии SPA позволяет повысить скорость работы систем и производительность, а также обеспечить лучший пользовательский опыт.