Форум 1С-Битрикс

Использование Vue.js в проектах на Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Использование Vue.js в проектах на Битрикс
Vue.js в Битриксе: интеграция современного фронтенда в классическую CMS

Цель статьи — дать рабочий подход: после прочтения вы сможете добавить динамический фронтенд на Битрикс (динамические формы, фильтры каталога, корзина, личный кабинет) на реальном проекте — без магии и за рамками hello world.
Этот Vue-компонент отображает корзину товаров с возможностью  динамического изменения количества товаров через AJAX-запросы к  компоненту Битрикса, с мгновенным пересчетом общей суммы.
Код
<?php
// /local/components/my/cart/templates/.default/template.php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

use Bitrix\Main\Web\Json;
$this->setFrameMode(true);
?>
<div id="vue-cart" data-props='<?= Json::encode($arResult['CART_DATA']) ?>'></div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const { createApp } = window.Vue;
    
    createApp({
        data() {
            return {
                items: [],
                loading: false
            }
        },
        computed: {
            total() {
                return this.items.reduce((sum, item) => sum + (item.PRICE * item.QUANTITY), 0);
            }
        },
        mounted() {
            const props = JSON.parse(document.getElementById('vue-cart').dataset.props);
            this.items = props.items || [];
        },
        methods: {
            async updateQuantity(itemId, newQuantity) {
                this.loading = true;
                try {
                    const result = await BX.ajax.runComponentAction('my:cart', 'update', {
                        mode: 'class',
                        data: { itemId, quantity: newQuantity }
                    });
                    this.items = result.data.cart;
                } catch (error) {
                    console.error('Ошибка обновления:', error);
                }
                this.loading = false;
            }
        },
        template: `
            <div class="cart">
                <div v-if="loading" class="loading">Обновление...</div>
                <div class="cart-item" v-for="item in items" :key="item.ID">
                    <span>{{ item.NAME }}</span>
                    <input 
                        type="number" 
                        :value="item.QUANTITY" 
                        @change="updateQuantity(item.ID, $event.target.value)"
                        min="1">
                    <span>{{ item.PRICE * item.QUANTITY }} ₽</span>
                </div>
                <div class="cart-total">Итого: {{ total }} ₽</div>
            </div>
        `
    }).mount('#vue-cart');
});
</script>
А какже BitrixVue ?
Цитата
MirDD написал:
А какже BitrixVue ?
Для этого есть курс от Битрикса - https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=176
И снова здравствуйте!Курс хорош, проброс контекста, события , локализация и прочие,  что они  реализовали в BitrixVue .Почему вы не используете этот удобный vue плагин, или может не удобный.
Очень интересно узнать ваше мнение.
Цитата
MirDD написал:
И снова здравствуйте!Курс хорош, проброс контекста, события , локализация и прочие,  что они  реализовали в BitrixVue .Почему вы не используете этот удобный vue плагин, или может не удобный.
Очень интересно узнать ваше мнение.

1) иногда хочется сделать не так, как дано в Битриксе
2) Битрикс не всегда поспевает за обновлением библиотек. Когда все уже использовали Bootstrap 5, из ядра Битрикса можно было подключить только третий

Мое мнение, что можно использовать не только что дано изнутри, но и то, что есть снаружи. Когда программист VueJS приходит в Битрикс, ему нужно адаптироваться под BitrixVue, а если надо сейчас и сразу, то хватит и тех знаний, что у него уже есть.
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.