Использование 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С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

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

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

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

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.