Разработка decoupled-фронтенда для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка decoupled-фронтенда для 1С-Битрикс
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    944
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

Разработка decoupled-фронтенда для 1С-Битрикс

Мы разрабатываем decoupled-фронтенд для 1С-Битрикс: физически отделяем интерфейс от CMS, сохраняя управляемость и возможность постепенной миграции. Решаем проблему, когда стандартный Битрикс-шаблон упирается в потолок производительности, а полный редизайн слишком рискован и затратен. Decoupled-подход даёт вам современный UX (React/Vue, SPA, SSR) без остановки бизнеса — мы заменяем только критичные страницы, оставляя админку и SEO-страницы на CMS.

Почему decoupled, а не headless?

Headless — это когда весь сайт держится на API, а CMS — лишь бэкенд. Это требует полной перестройки архитектуры. Decoupled — золотая середина: вы выбираете, какие страницы отдавать через SPA, а какие оставить на Битрикс-шаблонах. Например, каталог товаров может быть React-приложением, а контентные страницы — по-прежнему генерироваться CMS. Сравнение:

Параметр Traditional (Битрикс-шаблон) Decoupled Headless
Производительность UI Средняя (php-рендер) Высокая (SPA) Высокая (SPA)
Сложность внедрения Низкая Средняя Высокая
Скорость внедрения Мгновенно 2-4 недели на компонент 2+ месяца
SEO-совместимость Полная Частичная (нужен SSR) SSR обязателен
Риски Низкие Низкие (поэтапно) Высокие

Decoupled-фронтенд на 30% быстрее внедряется по сравнению с headless, при этом даёт 90% прироста производительности интерфейса. При этом вы сохраняете существующие битриксовые модули и бизнес-логику — не нужно переписывать инфоблоки, агенты и события.

Как синхронизировать корзину между Битрикс и React?

Самая частая боль при decoupled — корзина. Иконка в шапке (Битрикс-шаблон) должна отображать актуальное количество товаров, добавленных через React-каталог. Решение — Event Bus, доступный в обоих мирах:

// shared/eventBus.js — доступен и в Битрикс-части, и в React
window.BitrixEventBus = {
    listeners: {},
    emit(event, data) {
        (this.listeners[event] || []).forEach(cb => cb(data));
    },
    on(event, callback) {
        (this.listeners[event] ||= []).push(callback);
    }
};

// В React-компоненте при добавлении в корзину:
window.BitrixEventBus.emit('cart:updated', { count: newCount });

// В Битрикс-шаблоне (шапка):
window.BitrixEventBus.on('cart:updated', ({ count }) => {
    document.querySelector('.cart-counter').textContent = count;
});

Этот же паттерн применяется для синхронизации избранного, уведомлений и любых других глобальных состояний. Подробнее о REST API Битрикс24 читайте в официальной документации.

Паттерн «остров» — частичная интеграция фронтенда

Вместо полного отделения фронтенда вы встраиваете React-компоненты в существующий Битрикс-шаблон через точки монтирования:

// В шаблоне компонента каталога Битрикс
$catalogData = json_encode($arResult['ITEMS']);
?>
<div id="react-catalog"
     data-items="<?= htmlspecialchars($catalogData) ?>"
     data-currency="RUB">
</div>

<script src="/local/js/dist/catalog.bundle.js"></script>
<script>
  window.BitrixCatalog && window.BitrixCatalog.mount(
    document.getElementById('react-catalog'),
    <?= $catalogData ?>
  );
</script>
// catalog.bundle.js — собирается Webpack/Vite независимо
import { createRoot } from 'react-dom/client';
import { CatalogApp } from './CatalogApp';

window.BitrixCatalog = {
    mount(container, initialData) {
        const root = createRoot(container);
        root.render(<CatalogApp initialData={initialData} />);
    }
};

Этот подход позволяет разрабатывать фронтенд на React с полноценным toolchain (TypeScript, hot reload, тесты) и при этом не трогать остальную часть Битрикс-сайта.

Пример: каталог товаров на React

Допустим, нужно заменить стандартный компонент каталога Битрикса на SPA с мгновенной фильтрацией. Мы создаём API-эндпоинт, который отдаёт товары в JSON. React-приложение получает данные и рендерит на клиенте. Серверная часть остаётся на Битрикс — инфоблоки, цены, остатки. Это снижает время загрузки страницы на 40–60% и увеличивает конверсию на 15–25%.

Конфигурация сборки (Vite)

// vite.config.js для decoupled-компонентов Битрикс
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
    plugins: [react()],
    build: {
        outDir: '../public/local/js/dist',
        lib: {
            entry: './src/index.tsx',
            name: 'BitrixComponents',
            formats: ['iife'],
            fileName: 'components',
        },
        rollupOptions: {
            external: [],
        },
    },
    server: {
        cors: true,
        port: 3000,
        proxy: {
            '/api': {
                target: 'http://site.local',
                changeOrigin: true,
            }
        }
    },
});

В режиме разработки Vite dev-сервер запускается на localhost:3000, а Битрикс-сайт — на site.local. Обращения к API из dev-сервера проксируются через Vite proxy. После сборки билд автоматически синхронизируется с сервером.

Сравнение сроков внедрения компонентов

Компонент Срок (недели) Сложность
Каталог 3–4 Средняя
Корзина 2–3 Низкая
Личный кабинет 4–6 Высокая
Оформление заказа 2–3 Средняя

Что входит в работу

  • Аудит текущей архитектуры Битрикс-сайта и выявление кандидатов на decoupled
  • Разработка API-прослойки (REST/GraphQL) между Битриксом и новым фронтендом
  • Реализация 2–3 компонентов по паттерну «остров» (каталог, корзина, личный кабинет)
  • Настройка CI/CD для автоматической сборки и деплоя фронтенда
  • Интеграция Event Bus для синхронизации состояния
  • Документация по точкам монтирования и API
  • Тестирование производительности (замеры до/после)

Процесс работы

  1. Аналитика — изучаем существующий сайт, нагрузку, узкие места. Определяем, какие страницы заменить в первую очередь.
  2. Проектирование — выбираем стек (React/Vue), проектируем API, прорабатываем архитектуру компонентов.
  3. Реализация — пишем код параллельно с вашей командой. Еженедельные демо.
  4. Тестирование — нагрузочные тесты, регрессия по функционалу Битрикса.
  5. Деплой — выкатываем поэтапно, мониторим ошибки. Предусмотрен откат на 24 часа.
Технические требования для серверной части - PHP 8.1+ - MySQL 8.0+ - Модуль mod_rewrite для REST API - Настроенное кэширование тегированное - CORS разрешён для домена фронтенда - Необходимые расширения PHP описаны в официальных рекомендациях Битрикс

Сроки ориентировочно

От 2 недель на один компонент до 2 месяцев на полный переход под ключ. Стоимость рассчитывается индивидуально после аудита — напишите, оценим ваш проект.

Типичные ошибки при decoupled

  • Полное копирование дизайна в React — проигрываете в производительности из-за лишних перерисовок.
  • Отсутствие версионирования бандлов — браузер кэширует старые скрипты. Используйте хеши: catalog.a1b2c3.js.
  • Синхронизация состояния через HTTP вместо Event Bus — лишние задержки.
  • Забыть про SEO: если SPA не отдаёт HTML, поисковики не увидят страницы. Используйте SSR или prerendering.
  • Не настроить прокси для разработки — фронтенд не сможет обращаться к API Битрикса.

Имеем 10+ лет опыта с Битриксом, сертификаты «1С-Битрикс» и более 50 успешных проектов. Даём гарантию на все работы по договору. Закажите аудит вашего проекта — мы подберём оптимальную архитектуру decoupled. Получите консультацию по внедрению уже сегодня.

Почему вёрстка сайтов на 1С-Битрикс требует профессионализма?

Открываете template.php у предыдущего подрядчика — а там SQL-запросы, бизнес-логика и inline-стили в одном файле. На каждом втором проекте, который берём на поддержку, код шаблонов выглядит как свалка: кэш не работает, добавить новую фичу — переписывай всё. Средняя стоимость исправления такой вёрстки сайтов — 15 000–30 000 рублей только на отладку, а потерянная выручка из-за сломанной корзины в пик сезона может уходить в миллионы. Наша команда с 10-летним опытом строго разделяет: логика — в result_modifier.php или component_epilog.php, представление — в template.php. Никакого CIBlockElement::GetList в шаблоне. Это сокращает время правок на 30–40% и исключает типовые ошибки, которые ломают кэш. Аналогичную проблему исправляли клиенту, который месяц не мог обновить блок «Акции» — после настройки тегированного кэша правки вставали за минуту, а не за день.

Как правильно организовать шаблоны компонентов?

Кастомный шаблон — это не один файл, а структура из пяти-шести файлов:

  • template.php — только HTML и вывод $arResult
  • result_modifier.php — подготовка данных, дополнительные выборки
  • component_epilog.php — код после кэширования (счётчики, динамика)
  • style.css и script.js — подключаются через Asset::getInstance()->addCss() и addJs() (не через <link> — иначе ломается объединение)
  • .parameters.php — параметры визуального редактора

Пример структуры для каталога:

local/templates/your_template/components/bitrix/catalog.section/.default/
├── template.php
├── result_modifier.php
├── component_epilog.php
├── style.css
├── script.js
└── .parameters.php

Типовые шаблоны, которые верстаем под ключ:

Компонент Что делаем
catalog.section и catalog.element Переключение вида (плитка/список/таблица), lazy load для изображений, srcset для ретины
sale.basket.basket AJAX-обновление без перезагрузки, мини-корзина через sale.basket.basket.line
menu Мегаменю с кэшированием по разделам, отложенная загрузка подменю
search.title Автоподсказки с дебаунсом 300 мс, превью товаров в дропдауне
breadcrumb Микроразметка BreadcrumbList по Schema.org

Кэширование: почему оно ломается и как чиним?

Компонентное кэширование в Битрикс ломается одной ошибкой: вывели имя пользователя внутри кэшированного каталога — все видят одно имя. Решение — component_epilog.php для динамических вставок.

Tagged cache ($this->setResultCacheKeys, CIBlock::clearIblockTagCache) настраиваем обязательно. Изменили товар — очищается кэш только этого товара, а не всего раздела. На проекте с 50 000 товаров это даёт прирост скорости на 40% по сравнению с полным сбросом.

Реальный кейс. Клиент жаловался — на странице каталога у всех одна корзина. Оказалось, предыдущий разработчик вывел $_SESSION['BASKET'] внутри template.php компонента catalog.section. Компонент кэшировался на час — корзина застыла. Перенесли вывод в component_epilog.php, настроили тегированный кэш на sale.basket.basket.line. Страница не потеряла в скорости, корзина стала актуальной. Ущерб от неработающей корзины в пик сезона мог составлять миллионы, а цена исправления — в пределах 15 000 рублей. Другой клиент потерял 200 000 рублей за неделю из-за некорректного кэша формы заказа — мы вернули работоспособность за два дня.

Официальная документация Битрикс рекомендует использовать component_epilog.php для динамических вставок — подробнее в руководстве.

CSS-подходы: BEM, Tailwind или гибрид?

Для больших проектов (30+ шаблонов) используем BEM — .product-card__price, .product-card--featured. Стили изолированы, конфликтов нет. Подробнее о BEM. В Битрикс обёртки с классами bx-component не трогаем — оборачиваем свой BEM-блок внутри.

Для типовых задач (лендинги, админки) берём Tailwind 3+ с PurgeCSS — итоговый CSS 10–30 КБ вместо сотен. Дизайн-токены в tailwind.config.js фиксируют цвета, шрифты, отступы в одном месте.

На большинстве проектов применяем гибрид: BEM для структурных компонентов (каталог, карточка, чекаут), Tailwind для утилитарных вещей (отступы, flex-раскладки). Границу оговариваем с командой заранее.

Как мы достигаем Core Web Vitals?

Critical CSS — выделяем стили первого экрана через пакет critical, инлайним в <head>. Остальное грузится асинхронно через media="print" onload="this.media='all'". LCP на мобильных сокращается на 1–1.5 секунды.

Изображения — главный тормоз. Используем <picture> с WebP и JPEG-фолбэком. loading="lazy" для всего ниже первого экрана. width и height явно прописаны — CLS = 0. Обработчик в urlrewrite.php генерирует WebP на лету.

Минификация и сжатие. CSS и JS через Vite или встроенное объединение Битрикс. Brotli на nginx (brotli_comp_level 6) — на 15–20% эффективнее gzip. Кэширование статики: expires 1y + версионирование через query string.

Хотите получить подобные показатели? Свяжитесь с нами — сделаем аудит вашего проекта и предложим конкретные шаги.

Что входит в услугу вёрстки сайтов на 1С-Битрикс?

После заказа вёрстки шаблона или адаптации готового решения передаём:

  • Исходники шаблонов компонентов с разделением на template.php, result_modifier.php, epilog
  • CSS и JS, подключённые через Asset — без инлайн-стилей
  • Настроенное кэширование с тегами
  • Документацию по структуре и параметрам
  • Доступ к Git-репозиторию с историей изменений
  • Обучение вашего разработчика: как править шаблон без потери обновляемости

Гарантируем соответствие Core Web Vitals и кроссбраузерность. Закрепляем инженера с опытом 10+ лет — получите консультацию по вашему проекту до начала работ.

Процесс работы:

  1. Анализ макетов и текущего проекта — выявляем компоненты для переработки
  2. Проектирование структуры — разбиваем страницу на BEM-блоки
  3. Реализация — верстаем шаблоны по схеме: template, result_modifier, epilog, CSS, JS
  4. Тестирование — проверяем кэш, адаптивность, Core Web Vitals, кроссбраузерность
  5. Деплой — стейджинг, приёмка, продакшен

На каждом этапе вы получаете промежуточный результат и можете внести правки. Свяжитесь с нами — оценим проект за 1–2 дня после получения макетов.

Сроки

Объём работ Срок
Лендинг (5–7 экранов) 3–5 дней
Корпоративный сайт (15–20 уникальных страниц) 2–4 недели
Интернет-магазин (30+ шаблонов компонентов) 4–8 недель
Кастомизация готового решения Маркетплейса 1–3 недели
Редизайн существующего проекта 3–6 недель

После анализа даём разбивку по компонентам — что переиспользуется, что верстается с нуля. Закажите предварительную консультацию — посчитаем сроки и бюджет индивидуально.