Долгое время «1С-Битрикс» был стандартом для e-commerce. Он надёжен в работе с товарами, интеграцией с 1С, корзиной и заказами. В 2020-х требования к UX/UI заметно выросли: пользователи ждут от сайтов скорости нативных мобильных приложений.
В такой ситуации классическая монолитная архитектура начинает ограничивать проект. Разберём на практике, что даёт разделение backend и frontend.
Боль классической архитектуры компонентов
Главная проблема стандартных компонентов Битрикса в том, что логика и представление смешаны.
- «Спагетти-код».
result_modifier.php,component_epilog.phpиtemplate.phpтесно переплетают PHP и HTML, из-за чего поддержку становится сложнее. - Ограничения реактивности. Чтобы обновить часть страницы, часто нужна полная перезагрузка или тяжёлая AJAX-обёртка на устаревшем jQuery.
- Кадровый голод. Всё сложнее найти сильного frontend-разработчика, готового долго работать с legacy-шаблонами Битрикса: рынок ориентирован на Vue, React и Svelte.
Новая парадигма: Headless CMS
Разделение архитектуры оставляет Битриксу задачи, с которыми он хорошо справляется: базу данных, интеграцию с 1С, корзину, заказы и администрирование. При этом backend больше не отвечает за генерацию HTML.
На frontend работает связка Nuxt.js + Vue.js. Backend отдаёт через лёгкий REST API JSON вместо готового HTML. Frontend-разработчики могут быстро прототипировать интерфейс в современных инструментах вроде bolt.new, а команда сосредотачивается на каталоге, листинге и корзине.
На старте проекта не стоит перегружать первый релиз тяжёлыми серверными скриптами. Сначала лучше отточить базовые пользовательские сценарии и скорость отклика.
Разбор на практике: фильтр товаров
Сердце любого интернет-магазина, фильтр каталога. Именно здесь разница между подходами заметнее всего.
В коробке: bitrix:catalog.smart.filter
После клика по чекбоксу браузер отправляет запрос. Битрикс запускает ядро, пересчитывает фасетные индексы, генерирует тяжёлый фрагмент HTML и возвращает его браузеру. В итоге интерфейс блокируется, контент скачет (CLS), а пользователю приходится ждать.
На Nuxt + API
Frontend запрашивает только JSON с цифрами и ID товаров. Состояние фильтра хранится локально в Pinia: URL обновляется сразу, товары подгружаются асинхронно. Интерфейс реагирует без полной перезагрузки страницы.
Оценка прироста производительности
Ниже приведена иллюстративная модель замеров блока .catalog-listing при сложном фильтре в каталоге на 50 000+ товаров. Для конкретного проекта эти цифры нужно подтвердить собственным профилированием.
| Архитектура | Время ответа | Что происходит |
|---|---|---|
| Битрикс (коробка) | 950 мс | Полная перезагрузка или тяжёлый AJAX |
| Nuxt.js + API | 210 мс | Асинхронный JSON-запрос |
| Метрика | Битрикс (коробка) | Nuxt + API | Единицы |
|---|---|---|---|
| TTFB: ответ сервера | 600 | 120 | мс |
| TTI: интерактивность | 4,5 | 1,2 | сек |
В исходной модели ускорение фильтра с 950 до 210 мс экономит более 700 миллисекунд. Для бизнеса это может положительно повлиять на конверсию. Финансовый эффект зависит от источников трафика, ассортимента, UX и других факторов, поэтому такие оценки не гарантируют результат.
Демонстрация блока .catalog-listing
- Обзорная сцена. Показать каталог и сетку товаров MacBook Air. Каталог техники часто относится к самым нагруженным частям e-commerce.
- Работа с фильтром. Выбрать, например, Apple M3 и показать изменение URL и обновление сетки без моргания страницы.
- Множественный выбор и сброс. Быстро выбрать несколько параметров и нажать «Сбросить фильтр», проверив отсутствие залипания интерфейса.
- Пагинация или ленивая загрузка. Нажать «Показать ещё» и показать, как новые карточки добавляются в конец сетки.
- Мобильный опыт. Открыть мобильную шторку фильтра, применить параметр и проверить плавное закрытие и обновлённый листинг.
Итог
Разделённая архитектура Nuxt + API подходит проектам с высоконагруженными каталогами, требовательным UX/UI и ограничениями стандартных шаблонов. Битрикс остаётся надёжным фундаментом для бизнеса, а современный frontend помогает строить поверх него быстрый и отзывчивый интерфейс.






Обсуждение
Поделитесь мнением — первый комментарий задаст тон.