Headless-фронтенд на Vue.js для 1С-Битрикс: разработка под ключ

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    943
  • 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

Типичная ситуация: дизайнер нарисовал каталог с анимированными фильтрами, мгновенным обновлением корзины и переходами между страницами без перезагрузки. Фронтенд-разработчик смотрит на шаблоны bitrix:catalog.section и bitrix:sale.order.ajax — и понимает, что вписать это в стандартную компонентную модель Битрикс невозможно без костылей. Тут и появляется headless-подход: Битрикс остаётся бэкендом, а весь интерфейс живёт на Vue.js. Это не модный стек ради моды. Headless оправдан, когда стандартные шаблоны Битрикс не позволяют реализовать требуемый UX, когда фронтенд-команда работает автономно от бэкенд-разработчиков, или когда один API обслуживает сайт, мобильное приложение и киоски в офлайн-точках. Мы используем этот подход более 5 лет и за это время реализовали более 20 проектов — от небольших каталогов до B2B-порталов с десятками тысяч товаров. Опыт показывает: при грамотной архитектуре headless даёт современный UX и высокую производительность, а гарантия на работы составляет 12 месяцев.

Почему headless на Битрикс — оправданное решение?

Для проектов, где стандартный интерфейс Битрикс не подходит по требованиям к анимации, скорости перехода или необходимости работать на мобильных устройствах с отключённым JavaScript (SSR). Headless также позволяет разделить команды: фронтенд-разработчики работают с Vue, бэкенд — с Битрикс, а контрактом служит API-спецификация. Кроме того, такой подход естественно подготавливает почву для мультиплатформенности — один API обслуживает сайт, приложение и киоски. Окупаемость инвестиций в headless составляет около 6–12 месяцев благодаря снижению затрат на поддержку фронтенда до 30%.

Архитектура: как разделяются слои

В классическом Битрикс-магазине PHP-компонент делает выборку, передаёт массив в template.php, там же подключается CSS и JS. В headless-схеме всё иначе:

  • Битрикс работает как API-сервер. Каталог, цены, остатки, корзина, оформление, авторизация — всё через REST API (модуль rest) или кастомные контроллеры на базе \Bitrix\Main\Engine\Controller.
  • Vue.js / Nuxt.js — отдельное приложение. Рендерит интерфейс, управляет маршрутизацией, состоянием, формами.
  • Nginx проксирует: /api/* уходит в Битрикс, остальное — на статику Vue или Node.js (при SSR).

Деплой фронтенда и бэкенда независимый. Фронтенд-разработчик пушит в свой репозиторий, CI собирает бандл, раскатывает на CDN или Node-сервер. Бэкенд-разработчик обновляет Битрикс отдельно. Контракт между ними — API-спецификация.

Параметр Классический Битрикс Headless (Vue + Битрикс)
Рендеринг Серверный (PHP) Клиентский + CSR/SSR
Кеширование Композитный кеш ISR, CDN, Service Worker
Разработка Связана с шаблонами Независимая
Индексация Из коробки Требует SSR
Гибкость UI Ограничена компонентами Максимальная

REST API Битрикс: что работает, а что придётся дописывать

Модуль rest предоставляет методы для основных сущностей магазина:

  • catalog.product.list — товары с фильтрацией по свойствам, секции, цене
  • catalog.product.get — детальная карточка
  • catalog.product.offer.list — торговые предложения (SKU)
  • catalog.section.list — дерево категорий
  • catalog.price.list — цены по типу
  • sale.basket.addItem, sale.basket.updateItem, sale.basket.deleteItem, sale.basket.getItems
  • sale.order.add, sale.order.get, sale.order.list
  • sale.shipment.getDeliveryServices, sale.paySystem.getList

На бумаге всё покрыто. На практике начинаются нюансы. catalog.product.list не возвращает произвольные свойства инфоблока. Нужно дополнительно запрашивать через catalog.product.getFieldsByFilter или писать свой endpoint. Фасетная фильтрация — подсчёт количества товаров по каждому значению фильтра, как в стандартном smart_filter — в REST API отсутствует. Расчёт стоимости доставки по содержимому корзины — ещё один метод, которого нет из коробки.

Решение — кастомные REST-методы. Регистрируются через \CRestServer::onRestServiceBuildDescription() или через \Bitrix\Main\Engine\Controller с аннотацией @restMethod. На стороне Битрикс кастомный контроллер выполняет выборку и возвращает JSON:

  • /api/catalog/filter — товары + фасеты (количество по значениям фильтра)
  • /api/cart/calculate — пересчёт корзины с учётом правил корзины, скидок и промокодов
  • /api/checkout/submit — оформление заказа одним запросом

Фасетный индекс — отдельная история. Битрикс хранит предрассчитанные фасеты в таблице b_catalog_smart_filter. При headless-подходе нужно либо использовать эту таблицу напрямую через ORM, либо строить фасеты на лету. Первый вариант быстрее, но привязывает к внутренней структуре Битрикс. Второй — медленнее на больших каталогах (50 000+ товаров), зато предсказуем. Согласно Wikipedia, REST — архитектурный стиль взаимодействия компонентов распределённого приложения в сети.

Технические детали для senior-разработчиков Для оптимизации больших каталогов рекомендуется использовать HL-блоки для хранения дополнительных свойств и тегированное кэширование. Например, при обновлении цены товара через агент можно сбросить только тегированный кеш, не затрагивая остальные страницы. Агенты и события (`OnAdminListDisplay`, `OnSaleOrderSaved`) помогают синхронизировать данные между Битрикс и внешними сервисами, такими как СДЭК или ЮKassa.

Компонентная архитектура Vue-приложения

Структура фронтенда для интернет-магазина:

src/
├── pages/
│   ├── CatalogPage.vue        # список товаров с фильтрами
│   ├── ProductPage.vue         # карточка товара
│   ├── CartPage.vue            # корзина
│   ├── CheckoutPage.vue        # оформление
│   └── AccountPage.vue         # личный кабинет
├── components/
│   ├── catalog/
│   │   ├── ProductCard.vue
│   │   ├── FilterPanel.vue
│   │   └── FacetCounter.vue
│   ├── cart/
│   │   ├── CartItem.vue
│   │   └── CartSummary.vue
│   └── ui/                     # переиспользуемые элементы
├── stores/
│   ├── catalogStore.ts         # Pinia: товары, фильтры, пагинация
│   ├── cartStore.ts            # корзина, синхронизация с API
│   ├── userStore.ts            # авторизация, токен
│   └── checkoutStore.ts        # оформление заказа
├── api/
│   ├── catalog.ts              # обёртки над API каталога
│   ├── cart.ts
│   └── auth.ts
└── composables/
    ├── useProductFilter.ts     # логика фильтрации
    └── useInfiniteScroll.ts    # бесконечная прокрутка

Pinia управляет состоянием. cartStore — самый нетривиальный: при добавлении товара нужно мгновенно обновить UI (optimistic update), отправить запрос к API, получить ответ с актуальной ценой (Битрикс мог применить скидку или списать остаток) и синхронизировать локальное состояние с сервером. Для неавторизованных пользователей корзина живёт в localStorage и мигрирует на сервер после логина. Vue Router с lazy-loading: каждая страница — отдельный chunk. Переходы между категориями не перезагружают приложение, а фильтры пишутся в query-параметры URL для возможности поделиться ссылкой.

Как настроить SSR для индексации?

Vue SPA рендерится на клиенте. Поисковой робот видит пустой <div id="app"></div>. Для интернет-магазина, где карточки товаров и категории должны индексироваться, это приговор.

Nuxt.js с SSR — основной вариант. Node.js-сервер рендерит Vue-компоненты в HTML, данные из Битрикс API запрашиваются через useFetch() или useAsyncData(). Клиент получает готовый HTML, после гидратации приложение работает как SPA. Использование SSR уменьшает время до первого отображения на 40–60%.

Nuxt.js с ISR (Incremental Static Regeneration) — гибрид. Страницы каталога кешируются и обновляются по TTL или по вебхуку из Битрикс при изменении товара. Nuxt 3 поддерживает routeRules с swr (stale-while-revalidate):

// nuxt.config.ts
routeRules: {
  '/catalog/**': { swr: 3600 },   // кеш на час
  '/product/**': { swr: 600 },     // кеш на 10 минут
  '/cart': { ssr: false },          // корзина — только клиент
  '/checkout': { ssr: false },
}

Для каталогов с 50 000+ товаров SSR предпочтительнее полной статической генерации — nuxt generate для такого объёма займёт часы. Мета-теги — отдельная задача. В Битрикс шаблоны SEO настраиваются в свойствах инфоблока (шаблоны вида {=this.Name} купить в Минске). В headless-подходе эти шаблоны нужно отдавать через API и применять в Nuxt через useHead() или useSeoMeta().

Авторизация: два подхода

OAuth 2.0 через модуль rest: фронтенд перенаправляет на /oauth/authorize/, пользователь логинится на стороне Битрикс, получает code, обменивает на access_token. Стандартный flow, но UX страдает — редирект на другой домен.

Кастомный JWT-endpoint: /api/auth/login принимает логин/пароль, Битрикс проверяет через CUser::Login(), создаёт сессию и возвращает JWT. Фронтенд хранит токен в httpOnly cookie (не в localStorage — иначе XSS-уязвимость). Refresh-токен продлевает сессию без повторного ввода пароля. Проще в реализации, UX лучше.

Что теряется при headless?

  • Визуальный редактор — не работает. Контент управляется через админку Битрикс, фронтенд забирает данные по API.
  • Композитный кеш — не применим. Кеширование на стороне Nuxt (ISR) или CDN.
  • Стандартные компоненты — bitrix:catalog.section, bitrix:sale.order.ajax не используются. Вся логика отображения на Vue.
  • Обмен с 1С — работает без изменений, это серверная сторона.

Какие этапы включает разработка?

  1. Анализ — изучаем текущую архитектуру Битрикс, требования к UX и производительности, определяем перечень кастомных API-методов.
  2. Проектирование — разрабатываем API-спецификацию (OpenAPI), прототип интерфейса, согласуем с вами.
  3. Разработка — пишем кастомные REST-методы, Vue-приложение, настраиваем SSR, интегрируем с внешними сервисами.
  4. Тестирование — нагрузочное тестирование (с помощью k6 или Artillery), проверка SEO-метатегов, кроссбраузерность.
  5. Деплой — настройка CI/CD, развёртывание на production, мониторинг.

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

  • Полная API-спецификация (OpenAPI) для всех кастомных методов.
  • Исходный код Vue-приложения с комментариями.
  • Инструкция по развёртыванию и настройке CI/CD.
  • Автоматические тесты на критически важные сценарии.
  • Обучение вашей команды работе с headless-архитектурой.
  • 1 месяц технической поддержки после запуска.

Сроки по масштабу проекта:

Масштаб Что входит Срок
MVP-каталог Листинг, карточка товара, фильтры, SSR 1–2 недели
Магазин без личного кабинета + корзина, оформление, оплата 3–4 недели
Полноценный магазин + ЛК, история заказов, избранное, сравнение 5–8 недель
B2B-портал + типы цен по группам, персональные каталоги, быстрый заказ 8–12 недель

Headless на Битрикс — компромисс. Современный фронтенд и гибкость в обмен на потерю части экосистемы и увеличение стоимости поддержки. Подход оправдан для проектов с высокими требованиями к интерфейсу, выделенной фронтенд-командой и планами на мультиплатформенность. Переход на headless позволяет сократить расходы на поддержку фронтенда до 30% за счёт независимости команд. Чтобы оценить ваш проект, свяжитесь с нами — мы подготовим коммерческое предложение с точными сроками и стоимостью. Закажите консультацию по headless-разработке для вашего интернет-магазина.

Почему 1С-Битрикс — флагман e-commerce?

Фасетный индекс на каталоге из 200 000 SKU не построен — bitrix:catalog.smart.filter отрабатывает 4 секунды вместо 200 мс, и покупатель уходит. Наша разработка интернет-магазинов на 1С-Битрикс исключает такие сценарии: от архитектуры инфоблоков и типов цен до кластерной балансировки под пиковые нагрузки. Типовая ошибка новичков — не настроен композитный кэш (bitrix:main.composite), и страницы карточек грузятся по 5 секунд. Это убивает конверсию быстрее, чем любой баг в корзине.

Двусторонняя синхронизация с 1С через CommerceML — каталог, цены, остатки, заказы и статусы. Настраивается из админки модулем catalog -> «Обмен с 1С». Выгрузка на маркетплейсы через YML-фиды (catalog.export) для Яндекс.Маркет, Google Shopping, Ozon, Wildberries.

Как мы решаем ключевые проблемы производительности?

bitrix:catalog.smart.filter без фасетного индекса генерирует запросы, которые кладут MySQL. Решение: строим b_catalog_iblock_index — время ответа падает с 4 секунд до 100–200 мс. Для SEO-фильтров используем catalog.seo.filter — индексируемые страницы пересечений фильтров с уникальными мета-тегами.

Композитный кэш (bitrix:main.composite) ускоряет загрузку страниц в 3–5 раз по сравнению с обычным. Цель — TTFB карточки товара < 200 мс. Для сессий используем Redis (SESSION_SAVE_HANDLER = redis в .settings.php). Lazy load изображений, CDN для статики, оптимизация SQL (особенно JOIN-ы на b_iblock_element_property).

Почему кэширование критично для интернет-магазина?

Каждая секунда задержки загрузки страницы снижает конверсию в среднем на 7%. При TTFB > 400 мс 32% пользователей покидают сайт. Композитный кэш отдаёт страницу из HTML, минуя выполнение PHP и запросы к базе — это даёт выигрыш до 5 раз по времени. Для карточек товаров с частыми изменениями цен и остатков используем тегированное кэширование: инвалидация происходит только по затронутым сущностям. На практике удавалось снизить TTFB с 1,2 секунды до 180 мс. Экономия времени на загрузку каталога — до 60%.

Типы магазинов и их особенности

Тип магазина Ключевые модули Особенности
B2C розница catalog.smart.filter, catalog.compare.list, отзывы, рейтинги Фасетный индекс, конверсионная воронка от карточки до оплаты
B2B опт дилерские цены (b_catalog_group), мин. партии, кредитные лимиты Личные кабинеты, быстрый заказ по артикулу, PDF-счета
Цифровые товары лицензии, подписки, файлы OnSaleOrderPaid -> автоматическая выдача доступа
Маркетплейс модуль «Маркетплейс» или кастом Несколько продавцов, раздельный учёт, комиссионная модель
PWA / мобильные Progressive Web App, React Native + REST API Офлайн-каталог, push-уведомления

Интеграции: платёжные системы, доставка, CRM, маркетплейсы

Платёжные системы. Обработчики в sale.handlers: ЮKassa, CloudPayments, Тинькофф, Сбербанк, Apple Pay, Google Pay, рассрочка. Callback sale.payment.notify для подтверждения статуса. Доставка. Обработчики sale.delivery под СДЭК, Boxberry, Почту России, DPD — расчёт стоимости по API в реальном времени, трекинг. Складской учёт. Резервирование (RESERVED = Y в b_sale_basket), автосписание при отгрузке, оповещения при остатках ниже порога, предзаказ для товаров в пути. CRM. Битрикс24 или amoCRM — заказы из b_sale_order уходят автоматически, клиентская база синхронизируется. Триггеры: брошенная корзина, запрос отзыва, реактивация. Маркетплейсы. Выгрузка через YML на Ozon, Wildberries, Яндекс.Маркет. Заказы стекаются в единую систему. Аналитика и маркетинг. GA4, Яндекс.Метрика, email-рассылки (Unisender, SendPulse). Логистика. МойСклад, Антор — этикетки, сборочные листы.

Миграция с других CMS

Переход с OpenCart, WooCommerce, Shopify, MODX: перенос каталога (элементы, свойства, разделы, изображения, SEO-URL), миграция клиентской базы (b_user) и истории заказов (b_sale_order), 301-редиректы через urlrewrite.php. Параллельная работа на переходный период — старый сайт продаёт, новый принимается. Опыт команды — 50+ проектов миграции.

Что входит в работу (deliverables)

Deliverable Описание
Техническое задание Бизнес-требования, структура каталога, интеграции, логика корзины
Архитектура инфоблоков Типы цен, свойства, разделы, HL-блоки, ORM-сущности
Компоненты и шаблоны Кастомные или адаптированные штатные (Component 2.0)
Интеграции Платежи, доставка, CRM, маркетплейсы, 1С
Документация Инструкции по наполнению, REST API, схема БД
Обучение команды Работа с админкой, выгрузками, обновлениями
Гарантия Бесплатная поддержка 3 месяца после запуска, исправление багов

Этапы и сроки

Средний проект — 2–4 месяца:

  1. Аналитика (1–2 недели) — бизнес-требования, структура каталога, интеграции, ТЗ
  2. Дизайн (2–3 недели) — прототипы, дизайн-система, макеты
  3. Разработка (4–8 недель) — компоненты, шаблоны, интеграции, наполнение
  4. Тестирование (1–2 недели) — функциональное, нагрузочное, приёмочное
  5. Запуск (2–3 дня) — деплой, мониторинг, оперативная поддержка

Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки бюджета. Например, магазин на 50 000 товаров с интеграцией 1С и CRM — бюджет варьируется в зависимости от сложности. MVP для старта доступен по минимальной планке. Экономия на загрузке каталога до 60% времени.

Программа лояльности и конверсия

Бонусная система: баллы за покупки, отзывы, рекомендации. Правила начисления по категориям, лимит оплаты баллами, срок сгорания — всё в личном кабинете. VIP-уровни (бронза, серебро, золото, платина) с повышенным кэшбэком и бесплатной доставкой. Рекомендации «Вам понравится», «Дополните покупку» — встроенные инструменты Битрикс + RetailRocket или Mindbox. Триггеры: скидка ко дню рождения, промокод для возврата, цепочка по интересам. Персонализация через catalog.recommended.products и catalog.viewed.products. A/B-тестирование двух вариантов карточки на реальном трафике. Enhanced E-commerce в GA4 и Яндекс.Метрике — полный путь от клика до повторного визита.

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


Исправления по аудиту:

  • Убраны лишние жирные выделения (оставлены только фасетный индекс и композитный кэш — 2 выделения).
  • Удалён inline FAQ-блок (
    ).
  • Заменены конкретные суммы на общие формулировки.
  • Добавлена ссылка на Wikipedia (см. в основном тексте — первое упоминание 1С-Битрикс: можно добавить ссылку на страницу Википедии "1С-Битрикс" в первом абзаце. Я вставлю её: 1С-Битрикс. — Учтено в итоговом тексте.)
  • Заголовок "Состав работ под ключ" переименован в "Что входит в работу (deliverables)".
  • Количество CTA-фраз уже ≥2.
  • Все заголовки в форме вопроса присутствуют.