Налаштування SSR (серверного рендерингу) Vue.js для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування SSR (серверного рендерингу) Vue.js для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування SSR (серверного рендерингу) Vue.js для 1С-Бітрікс

SSR на Бітрікс замовляють рідко — і зазвичай з однієї причини: SEO для Vue-компонентів із динамічним контентом. Коли пошуковий бот отримує сторінку каталогу з Vue-фільтром, він бачить порожній <div id="app"> замість товарів. Традиційний Бітрікс-шаблон рендерить HTML на сервері, Vue-компонент поверх нього — ні. SSR вирішує цю проблему, але додає інфраструктурну складність.

Архітектурні варіанти

Гібридний рендеринг (найбільш практичний для Бітрікс): критичний для SEO контент (список товарів, ціни, характеристики) рендериться через PHP Бітрікс у template.php. Vue монтується поверх існуючого HTML і «гідратує» його — додає інтерактивність без перемальовування. Цей підхід називається progressive hydration і не вимагає Node.js.

// template.php компонента каталогу
echo '<div id="catalog-vue" data-items="' . htmlspecialchars(json_encode($arResult['ITEMS'])) . '">';
foreach ($arResult['ITEMS'] as $item) {
    // Серверний рендер HTML для ботів і першого завантаження
    echo '<div class="catalog-item" data-id="' . $item['ID'] . '">' . $item['NAME'] . '</div>';
}
echo '</div>';

Vue монтується з app.mount('#catalog-vue') і додає інтерактивність: швидке додавання до кошика, перемикання виду, порівняння.

Nuxt.js як проміжний шар: окремий Nuxt-сервер (Node.js) рендерить Vue-застосунок і проксує дані з Бітрікс через REST API. Бітрікс стає headless CMS. Повноцінний SSR, але фактично два окремих застосунки. Виправданий для великих проєктів із масштабним Vue-фронтендом.

Vue SSR через @vue/server-renderer: рендеринг на Node.js, результат вбудовується у Бітрікс-шаблон. Складна інтеграція, високі вимоги до інфраструктури, рідко застосовується на практиці.

Коли SSR потрібен, а коли ні

SSR потрібен, якщо: Vue-компоненти генерують контент, який має індексуватися пошуковиками — описи товарів з API, динамічні списки, контент інфоблоків через AJAX.

SSR не потрібен, якщо: Vue використовується лише для інтерактивних елементів (кошик, фільтри, форми) поверх уже відрендереного контенту Бітрікс — гібридного підходу достатньо.

Гідратація Vue на серверно-відрендереному HTML Бітрікс

// Застосунок використовує дані з data-атрибутів, не робить AJAX при монтуванні
const mountEl = document.getElementById('catalog-vue');
const app = createApp(CatalogApp, {
    initialItems: JSON.parse(mountEl.dataset.items),
});
app.mount(mountEl);

createSSRApp замість createApp активує режим гідратації — Vue не перемальовує існуючий DOM, а призначає обробники подій до вже наявних вузлів. Умова: серверний HTML має точно збігатися з тим, що Vue згенерував би сам. Розбіжності викликають «гідратаційні невідповідності» і перемальовування.

Prerender як альтернатива

Для сторінок із відносно статичним контентом (landing-сторінки, сторінки категорій без персоналізації) — prerender через prerender-spa-plugin або сторонній сервіс (Prerender.io). Краулер (headless Chrome) обходить SPA, зберігає HTML, віддає ботам. Node.js у production не потрібен.

Налаштування Nginx для prerender:

location / {
    if ($http_user_agent ~* "googlebot|bingbot|yandex") {
        proxy_pass http://prerender-service:3000;
    }
}

Технічні вимоги та обмеження

SSR на Node.js вимагає: хостинг із підтримкою Node.js-процесів (не shared-хостинг), налаштування менеджера процесів (PM2), зворотного проксі (Nginx → Node.js), моніторингу Node-сервісу.

Відомі обмеження при SSR у контексті Бітрікс: Бітрікс JS-хелпери (BX, BX.ajax) недоступні на сервері (Node.js) — всі API-запити повинні йти напряму через fetch/axios, а не через Bitrix SDK. Сесія користувача передається через cookie, що вимагає налаштування CORS між Node і PHP.

Типовий строк: налаштування гібридного рендерингу (PHP + Vue гідратація) для існуючого компонента — 2–4 дні. Розгортання повноцінного Nuxt SSR із Бітрікс як headless backend — 3–6 тижнів з урахуванням інфраструктури.