Настройка Vue Router для SPA на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Vue Router для SPA на 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 Appointment Booking Widget for a Medical Center
    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

Настройка Vue Router для SPA на 1С-Битрикс

Личный кабинет пользователя, мультишаговый оформление заказа, фильтруемый каталог — ситуации, когда навигация внутри интерфейса не должна перезагружать страницу. Vue Router в связке с Битриксом требует аккуратной настройки: маршруты Vue не должны конфликтовать с URL-структурой Битрикса, а серверная часть должна корректно обрабатывать прямые переходы по SPA-ссылкам.

Режимы истории: hash vs history

Hash-режим (createWebHashHistory) — URL выглядит как /lk/#/orders. Плюс: не требует настройки сервера, Битрикс получает запрос к /lk/ и не видит хеш. Минус: некрасивые URL, плохо для SEO (хотя личный кабинет не индексируется).

History-режим (createWebHistory) — URL как /lk/orders/. Красивые URL, но сервер должен возвращать один и тот же HTML для всех SPA-маршрутов. В Битрикс это решается через urlrewrite.php или через .htaccess:

# .htaccess для SPA-раздела /lk/
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /lk/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ /lk/ [L]
</IfModule>

В urlrewrite.php Битрикса добавляется правило, которое направляет все запросы внутри /lk/ на один PHP-файл — входную точку SPA. Этот файл монтирует Vue-приложение.

Структура маршрутов для личного кабинета

const routes = [
    {
        path: '/',
        component: LkLayout,
        children: [
            { path: '', redirect: 'orders' },
            { path: 'orders', component: OrdersList,
              meta: { title: 'Мои заказы' } },
            { path: 'orders/:id', component: OrderDetail,
              meta: { title: 'Заказ' } },
            { path: 'profile', component: ProfileEdit,
              meta: { title: 'Профиль' } },
            { path: 'addresses', component: AddressList,
              meta: { title: 'Адреса доставки' } },
        ]
    },
    { path: '/:pathMatch(.*)*', component: NotFound }
];

const router = createRouter({
    history: createWebHistory('/lk/'),
    routes
});

base: '/lk/' в createWebHistory — чтобы Vue Router не путался с Битриксовыми URL выше по дереву.

Guards: проверка авторизации

router.beforeEach((to, from, next) => {
    const userStore = useUserStore();
    if (!userStore.isAuthorized) {
        // Редирект на битриксовую страницу авторизации
        window.location.href = '/auth/?backurl=' + encodeURIComponent(to.fullPath);
        return;
    }
    next();
});

Битрикс управляет авторизацией на уровне PHP — если сессия истекла, контроллер вернёт 401, Vue-приложение поймает это в axios-интерцепторе и выполнит редирект.

Ленивая загрузка маршрутов

const OrderDetail = () => import('./pages/OrderDetail.vue');

Каждый роут — отдельный чанк. Vite разбивает сборку, страница деталей заказа загружается только при первом переходе. Для личного кабинета с 5-8 страницами это сокращает начальную загрузку.

Сохранение состояния между маршрутами

keep-alive для компонентов, которые не должны пересоздаваться при возврате — например, фильтры в списке заказов:

<RouterView v-slot="{ Component }">
    <KeepAlive include="OrdersList">
        <component :is="Component" />
    </KeepAlive>
</RouterView>

При возврате к списку заказов — состояние фильтров и позиция скролла сохраняются. Данные обновляются через onActivated хук.

Интеграция с SEO-инструментами Битрикс

Для SPA-страниц, которые должны индексироваться (каталог с фильтрами), Vue Router работает в hash-режиме или используется Prerender.io / серверный пре-рендер. Для закрытых разделов (личный кабинет) — индексация не нужна, history-режим без ограничений.

Meta-теги страниц при навигации через Vue Router — через vue-meta или нативно:

router.afterEach((to) => {
    document.title = to.meta.title + ' — Личный кабинет';
});

Типичный срок: настройка Vue Router для личного кабинета с 5-7 маршрутами, включая guards, ленивую загрузку и настройку сервера — 2-3 рабочих дня. Для сложных SPA с вложенными маршрутами и несколькими уровнями авторизации — 4-6 дней.