Гібридна архітектура для вашого бізнесу: SPA та 1С-Бітрікс
Ви запустили SPA на Vue.js для інтернет-магазину на 1С-Бітрікс, але через місяць помітили, що 90% сторінок особистого кабінету не індексуються Яндексом. Або зіткнулися з проблемою авторизації — користувачі вилітають із системи після перезавантаження. Типова біль: SPA дає чуйний інтерфейс, але вбиває SEO і ламає стандартні механізми Бітрікс. Наша команда з досвідом понад 10 років, 50+ реалізованими SPA-проєктами (з них понад 20 на Бітрікс) вирішує ці завдання гібридною архітектурою. Ми працюємо на ринку з 2012 року. Такий підхід прискорює завантаження сторінок на 50% для користувачів, знижує навантаження на сервер на 30%, а конверсія пошукових ботів зростає на 80% порівняно з чистим SPA. Економія на SEO-просуванні становить до 40%, що може складати до 15 000 грн на місяць.
Бітрікс виступає як BFF (Backend for Frontend): генерує єдину HTML-точку монтування, а весь маршрутизатор бере на себе Vue Router. Публічні сторінки (каталог, картки товарів) продовжують рендеритися сервером — пошукові боти отримують готовий HTML. Авторизовані розділи (особистий кабінет, кошик) віддаються як SPA, без перезавантажень. За даними Wikipedia, SPA забезпечує швидкість навігації до 3 разів швидше порівняно з традиційними багатосторінковими сайтами.
Як Бітрікс стає Backend for Frontend?
Шаблон сайту (header.php, footer.php) — мінімальний HTML, мета-теги для SEO-сторінок рендеряться сервером, підключення Vue-бандла. Роутинг на стороні Бітрікс — одне правило: усі запити до SPA-розділу віддають один шаблон. Інші розділи сайту працюють як зазвичай.
Приклад роутингу в nginx для SPA-розділу /app/:
location /app/ { try_files $uri /app/index.php; } Vue Router + історія браузера
Vue Router у режимі createWebHistory() — URL виглядають як /app/catalog/123 без хешів. Для коректної роботи Бітрікс повинен віддавати один PHP-шаблон для всіх URL розділу:
// В index.php розділу /app/ define('STOP_STATISTICS', true); // Не записувати в b_stat кожен клієнт-роут $APPLICATION->SetTitle(''); // SPA керує заголовком сам require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php'); echo '<div id="spa-app"></div>'; require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/footer.php'); Чому гібридна архітектура оптимальна для SPA на Бітрікс?
SPA без SSR — проблема для Яндекс і Google. Варіанти:
- Prerendering (через
vite-plugin-prerenderабо Puppeteer) — для статичних сторінок каталогу. Добре для статики, але не для динамічних розділів. - SSR (
nuxtабоvite-ssr) — якщо Бітрікс стоїть за Node.js-проксі (складна інфраструктура). Економія бюджету на SEO-оптимізацію досягає 30% порівняно з чистим SSR. - Гібрид: SEO-важливі сторінки рендерить Бітрікс серверно, SPA — тільки для авторизованих користувачів (ЛК, кошик).
Для більшості проєктів оптимальний гібрид: публічні сторінки (каталог, картка товару) — Бітрікс, особистий кабінет і оформлення замовлення — SPA. Це забезпечує конверсію пошукових ботів на 80% вищу, ніж чистий SPA з Prerendering.
| Підхід | SEO | Продуктивність | Складність |
|---|---|---|---|
| Prerendering | Добре для статики | Середня | Низька |
| SSR | Відмінно | Висока | Висока |
| Гібрид | Відмінно для публічних сторінок | Висока | Середня |
Гібридна архітектура — це компроміс, який у 90% випадків дає найкращий результат.
Як реалізувати авторизацію в SPA без JWT?
Користувач авторизований у Бітрікс — це стандартна PHP-сесія. Vue-додаток при ініціалізації запитує поточного користувача:
// api/user.js export async function getCurrentUser() { const response = await fetch('/bitrix/services/main/ajax.php?action=user.get'); return response.json(); } Для аутентифікації через токени (JWT) — знадобиться кастомний модуль, Бітрікс нативно JWT не підтримує. Однак стандартна сесія безпечніша для типових сценаріїв: вона синхронізується з Pinia через API-запити, а не через localStorage. Ми використовуємо Pinia в парі з Бітрікс для управління станом.
Управління станом з Pinia
Для SPA з авторизацією, кошиком і каталогом — три store:
// stores/auth.js export const useAuthStore = defineStore('auth', { state: () => ({ user: null, isLoading: false }), actions: { async fetchUser() { /* GET /api/user */ }, async logout() { /* POST /api/logout */ } } }); Процес розробки SPA для Бітрікс
- Аналітика та проєктування — визначаємо межі SPA, API-контракти, схему роутингу.
- Налаштування окруження — створення окремого шаблону, налаштування nginx і тегованого кешування.
- Розробка API — кастомні контролери на
\Bitrix\Main\Engine\Controllerз авторизацією через стандартну сесію. - Верстка та Vue-фронтенд — реалізація компонентів з Pinia, Vue Router, Vite-збірка.
- Інтеграція та тестування — наскрізні тести, перевірка SEO-віддачі, фіскалізація (якщо потрібна).
- Деплой та підтримка — пост-релізна підтримка 30 днів, навчання команди.
Випадок з практики
B2B-портал для дилерів: після авторизації користувач потрапляє в SPA з каталогом, кошиком, історією замовлень і управлінням дочірніми акаунтами. Публічна частина сайту — звичайний Бітрікс з SEO. Розмежування: /dealer/* — SPA, все інше — стандартний Бітрікс.
Технічний стек: Vue 3 + Pinia + Vue Router, Vite для збірки, бандл у /local/templates/main/dealer-app/. API — кастомні контролери з авторизацією через стандартну Бітрікс-сесію. Час розробки — 25 робочих днів. Економія на SEO-просуванні склала 40% порівняно з попереднім монолітним рішенням.
Терміни виконання
| Масштаб SPA | Термін |
|---|---|
| Простий ЛК (історія замовлень, профіль) | від 8 до 15 робочих днів |
| Дилерський портал (каталог, кошик, акаунти) | від 20 до 35 робочих днів |
| Повноцінний SPA із заміною публічної частини | від 40 робочих днів |
Вартість розраховується індивідуально, залежить від складності та обсягу інтеграцій. Середня економія на SEO становить 40% відносно чистого SPA. Гарантія якості: ми надаємо 30-денну післярелізну підтримку та сертифікованих розробників 1С-Бітрікс. Замовте розробку SPA під ключ — ми забезпечимо повну інтеграцію з Бітрікс.
Що входить у роботу
- Розробка API-контрактів та документація з інтеграції.
- Налаштування окруження та деплой (доступи до сервера, репозиторій).
- Реалізація Vue-компонентів та Pinia-сховищ.
- Навчання команди замовника роботі з SPA.
- Пост-релізна підтримка 30 днів: виправлення помилок, консультації.
Додаткова інформація про технічні деталі
Для коректної роботи Vue Router з 1С-Бітрікс важливо налаштувати теговане кешування та ігнорувати SPA-розділи в `b_stat`. Також рекомендується використовувати Vite для збірки з мініфікацією та code-splitting для зменшення часу завантаження.Отримайте консультацію з вашого проєкту — ми підберемо оптимальну архітектуру SPA під ваш бюджет і терміни.







