Персональный сайт Олега Барабанова

Что происходит с проектом Bootstrap-Vue? Стоит ли рассчитывать на эту библиотеку?

При разработке приложений на Vue2, я предпочитал использовать как фреймворк Bootstrap 4-ой версии, т.к. это проверенное годами решение с хорошей документацией и поддержкой.

Естественно, для удобной работы с компонентами, я использовал библиотеку Bootstrap-Vue, которая имеет хорошее покрытие тестами, популярная (более 13.6k звезд на Github) и имеющая хорошую документацию. Особенностью этой библиотеки является то, что они смогли в ней отвязать Bootstrap 4 от JQuery, благодаря чему убрали множество несовместимых вещей и увеличили скорость работы.

К сожалению ничто не вечно под луной. Со временем вышел Vue3 с улучшенной поддержкой TypeScript и прекрасным Composition API, а также вместе с ним вышел и Vuex4. Со стороны Twitter вышел Bootstrap5, который стал стал более компактным и в полной мере стал поддерживать CSS Variables, а также перестал зависеть от JQuery. А с версии Bootstrap 5.1 стали поддерживаться CSS Grid - что стало последней каплей моего терпения и я стал изучать варианты обновления.

Проблемы Bootstrap-Vue.

К сожалению, согласно статистике репозитория на Github, активная разработка остановилась фактически с января этого года и основные разработчики не проявляют серьезной активности. Конечно у них там автоматизировано обновление зависимостей с последующим тестированием (короче говоря, развернут CI/CD процесс).

Сообщество пытается завести все хотя бы с использованием @vue/compat, что в ограниченной мере позволяет использовать Vue2 библиотеки в Vue3. К сожалению минусов у этого подхода большое количество, т.к. Vue2 и Vue3 имеют достаточно большое количество различий и Compat Mode вносит некоторое количество ограничений, несовместимостей и просто сюрпризов.

Конечно же Compat Mode в Vue3 совсем не добавляет радости при одновременном использовании еще и TypeScript с Vuex и тем-же Vue-i18n... В общем, всеравно на определенном этапе встает вопрос в поддержке чистого Vue3&Vuex4&Bootstrap5 со всеми возможностями Composition API, ибо количество костылей на квадратный километр кода начнет превышать разумные пределы.

Использование напрямую Bootstrap 5 с Vue3 без использования Bootstrap-Vue.

Т.к. Bootstrap 5 перестал зависеть от JQuery и еще меньше в себе стал содержать "магии", нам никто не мешает теперь напрямую использовать Bootstrap5. Из минусов, конечно вы лишаетесь удобного именования bootstrap элементов как полноценных веб-компонентов:

<!-- Bootstrap-vue button component -->
<b-button variant="danger">Кнопка</b-button>

<!-- Bootstrap 5 button without any web-components -->
<button type="button" class="btn btn-danger">Danger</button>

С другой стороны вы в своем проекте избавляетесь от одной большой зависимости и вполне можете использовать всю мощь Vue с его Composition API и Vue 3 Teleport Feature - благодаря которым можно делать намного более чистую и простую работу с модальными окнами. Да и более намного более лучшая поддержка TypeScript - это довольно таки сильный аргумент.

Заключение

В настоящее время я не рекомендую завязываться на Bootstrap-Vue из-за туманного будущего у этой библиотеки. Поэтому можно посмотреть в сторону MDBootstrap (дорого и спорно), либо напрямую использовать Bootstrap 5.

Тем не менее если проект Bootstrap-Vue сможет выкарабкаться - это будет хорошей новостью, т.к. разработчики уже доказали, что могут сделать качественную и стабильную библиотеку.