Клиент vs Сервер
Артем Житник
Web бурно развивается, предлагая много вариантов для построения приложений, фреймворков, библиотек, архитектур. Выделяются два подхода - генерация контента на сервере, и на клиенте. Каждый имеет свои плюсы и минусы.
На сервере | На клиенте | |
---|---|---|
Пример | Традиционное Битрикс приложение, построенное на компонентах | Одностраничное приложение (SPA) на React |
Маршрутизация страниц | В Битриксе через механизм ЧПУ | Используется браузерный History API |
Серверный рендеринг (SSR) | Нативный | Настраивается отдельно, не всегда очевидно |
SEO дружественность | Хорошая. Поисковый бот качает контент каждой конкретной страницы без проблем | Так себе. Обычное SPA приложение при первом запросе страницы отдает заглушку - каркас страницы, который наполняется контеном на клиенте, путем дополнительных запросов к API |
Создание сложных интерфейсов пользователя | Затруднено, приводит к запутанному коду, в котором сложно разобраться | Отлично подходит. Многие компоненты работают в контексте приложения, а не размазаны по страницам. |
Оптимизация клиентской части | Ограниченная. Обычно подключаются готовые библиотеки типа jquery, bootstrap, которые содержат много лишнего. | Отличная. Используя сборщик, типа webpack, можно оптимизировать js, css, svg и даже растровые картинки если надо. |
Порог входа, сложность разработки и развертывания | Все просто, можно не быть программистом. Покупается хостинг заточенный под Битрикс, через мастер установки (восстановления) разворачивается проект. Изменения, сделанные в php файлах, отражаются на страницах сразу. | Сложнее. Клиентское приложение нужно собирать после изменения в коде. Нужно быть знакомым с javascript, typescript, react, webpack и т.д. Но также нужно ориентироваться и в backend, с которым будет взаимодействовать клиентское приложение. |
Существуют так называемые гибридные варианты, сочетающие плюсы упомянутых выше подходов, например next.js, gatsby. В частности next.js делает SSR из коробки. Он может также отдавать если надо, страницы с рендерингом на клиенте как в классических SPA, и даже статические страницы сгенерированные на этапе сборки.
Индустрия явно движется в сторону клиентских приложений, и может быть скоро они станут стандартом, но пока это не так. Стоит хорошо задуматься, стоит ли платить за оптимизацию сборки усложнением развертывания и разработки.