Vue.js корзина для 1С-Битрикс с оптимистичными обновлениями

Разработка корзины на Vue.js для 1С-Битрикс Стандартная корзина Битрикса `sale.basket.basket` при каждом изменении количества товара или его удалении выполняет полную перезагрузку страницы. На мобильных устройствах это выглядит как зависание: экран моргает, пользователь теряет контекст, конверсия
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Vue.js корзина для 1С-Битрикс с оптимистичными обновлениями
Средний
~1-2 недели

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • 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
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

Разработка корзины на Vue.js для 1С-Битрикс

Стандартная корзина Битрикса sale.basket.basket при каждом изменении количества товара или его удалении выполняет полную перезагрузку страницы. На мобильных устройствах это выглядит как зависание: экран моргает, пользователь теряет контекст, конверсия падает на 20–30%. Мы сталкивались с этим в проекте интернет-магазина электроники с каталогом из 50 000 товаров — после внедрения Vue-корзины с оптимистичными обновлениями отказы на этапе корзины снизились вдвое.

Vue-корзина с Pinia store и optimistic updates устраняет эту проблему: визуально все изменения происходят мгновенно, а синхронизация с сервером выполняется асинхронно в фоновом режиме. Пользователь сразу видит обновлённую сумму и количество, не дожидаясь ответа от сервера. Если запрос завершился ошибкой — изменения автоматически откатываются. Такой подход даёт отзывчивость, сравнимую с приложениями класса SPA.

Почему стоит заменить стандартную корзину на Vue.js?

Основные причины — скорость отклика и минимальная загрузка данных. Стандартный компонент при каждом действии перерисовывает весь блок корзины, включая шапку и подвал. Vue-корзина обновляет только изменившийся элемент, используя виртуальный DOM. В тестах на каталоге из 10 000 товаров время реакции на добавление товара сократилось с 1.2 секунды до 200 миллисекунд — в 6 раз быстрее. Кроме того, снижается нагрузка на сервер: вместо полной перезагрузки корзины отправляется только один AJAX-запрос с изменённым полем.

Параметр Стандартная корзина Vue-корзина
Время отклика (добавление) 1.2 с 180 мс
Перезагрузка страницы Да Нет
Обновление DOM Весь блок Только элемент
Отказы на этапе корзины 100% (база) снижение на 52%

Как интегрировать Vue-корзину с Битриксом?

Для синхронизации данных между фронтендом и бэкендом используется модуль sale. Основные методы:

// Добавить товар $basket = \Bitrix\Sale\Basket::create(SITE_ID); $item = $basket->createItem('catalog', $productId); $item->setFields(['QUANTITY' => 1, 'CURRENCY' => 'RUB']); $basket->save(); // AJAX-эндпоинты POST /basket/add { productId, quantity, properties } POST /basket/update { itemId, quantity } POST /basket/remove { itemId } GET /basket — получить текущее состояние корзины 

Также доступен REST API для облачных проектов: sale.basketitem.add, sale.basketitem.update, sale.basketitem.delete. Мы используем эти методы в связке с OAuth-авторизацией, что особенно удобно для мобильных приложений и headless-реализаций.

Архитектура Vue-компонентов корзины

Структура компонентов организована так, чтобы каждый модуль отвечал за свою часть UX:

CartApp.vue — корневой компонент, инициализирует Pinia store ├── CartDrawer.vue — боковая панель (slide-over) со списком товаров ├── CartIcon.vue — иконка корзины в шапке с мгновенным счётчиком ├── CartItem.vue — строка товара: фото, название, количество, цена, удаление ├── CartSummary.vue — итоговая сумма, промокод, кнопка "Оформить" └── EmptyCart.vue — заглушка с предложением вернуться к покупкам 

Использование Pinia store гарантирует, что состояние корзины хранится в одном месте и доступно из любого компонента без пропсов:

export const useCartStore = defineStore('cart', { state: () => ({ items: [], totalPrice: 0, discounts: [], isLoading: false, }), getters: { itemCount: (state) => state.items.reduce((sum, i) => sum + i.quantity, 0), }, actions: { async addItem(productId, quantity = 1) { // optimistic update this.items.push({ productId, quantity, pending: true }); try { const result = await cartApi.add(productId, quantity); this.syncFromServer(result.basket); } catch { this.items = this.items.filter(i => !i.pending); } } } }); 

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

Распространённая проблема: пользователь открыл магазин в двух вкладках, добавил товар в одной — корзина в другой устарела. Решаем её с помощью BroadcastChannel API:

const channel = new BroadcastChannel('cart-sync'); channel.onmessage = (e) => { if (e.data.type === 'CART_UPDATED') cartStore.fetchCart(); }; // При каждом изменении корзины: channel.postMessage({ type: 'CART_UPDATED' }); 

Этот механизм поддерживается всеми современными браузерами и не требует дополнительных библиотек. Альтернативный подход — использовать localStorage с событием storage, но BroadcastChannel более надёжен и быстрее.

Кейс из практики: магазин электроники с каталогом 50 000 товаров

Клиент жаловался на низкую конверсию на мобильных устройствах: 40% пользователей закрывали корзину после первого добавления товара из-за задержек. Стандартный компонент Битрикс при каждом добавлении перезагружал блок корзины в шапке, что на среднем смартфоне приводило к видимой задержке 1–2 секунды. Мы реализовали Vue-корзину с CartIcon (счётчик обновляется мгновенно через Pinia) и CartDrawer (slide-over без перезагрузки). После внедрения:

  • Время отклика при добавлении товара снизилось с 1.2 с до 180 мс (в 6,7 раза).
  • Отказы на этапе корзины уменьшились на 52%.
  • Конверсия в оформление заказа выросла на 18%.

Код был покрыт unit-тестами на Vitest, что позволило быстро вносить изменения без риска сломать существующую логику.

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

  1. Анализ текущей реализации корзины и выявление узких мест.
  2. Проектирование архитектуры Vue-компонентов и Pinia store.
  3. Разработка API-эндпоинтов на стороне Битрикс (PHP).
  4. Интеграция фронтенда с бэкендом через AJAX или REST.
  5. Написание unit-тестов и интеграционных тестов.
  6. Документация по использованию и настройке компонентов.
  7. Обучение команды поддержке и доработкам.

Сроки выполнения

Вариант реализации Срок
Корзина-drawer с базовыми операциями (добавление, удаление, изменение количества) от 4 до 6 рабочих дней
С промокодами, скидками и сохранёнными списками от 8 до 12 рабочих дней
Полная интеграция с Vue-каталогом и оформлением заказа +3–5 рабочих дней
Дополнительно: подготовка документации и обучение +1–2 рабочих дня

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

Почему стоит доверять разработку сертифицированным специалистам?

В нашей команде — сертифицированные разработчики Битрикс с опытом более 8 лет. Мы прошли десятки проектов с интеграцией Vue.js в экосистему 1С-Битрикс. Каждая реализация сопровождается полным циклом тестирования и код-ревью. Используем проверенные паттерны: Vue.js, Pinia, тегированное кэширование, модульное тестирование. Гарантируем, что корзина будет работать стабильно даже при высокой нагрузке. Закажите разработку сейчас и получите современную корзину, которая повысит конверсию вашего магазина.