Статьи

Интеграция Bootstrap с Vue.js с помощью Bootstrap-Vue

В этой статье мы рассмотрим, как интегрировать Bootstrap с Vue.js, используя Bootstrap-Vue.

React и Vue.js являются двумя ведущими современными средами JavaScript для фронт-энда. Хотя React имеет крутую кривую обучения и сложный процесс сборки (если вы из мира jQuery), все, что вам нужно сделать, чтобы начать использовать Vue.js, — это простой скрипт импорта:

<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script> 

Bootstrap стал популярной платформой HTML / CSS для создания мобильных адаптивных веб-сайтов. Тем не менее, он опирается главным образом на jQuery для своих основных функций, а также его обширный список компонентов, таких как оповещения и модальные функции. Итак, мы рассмотрим, как использовать Bootstrap с Vue.js, тем самым устраняя необходимость в jQuery.

Представляем Bootstrap

Первоначально созданная в конце 2011 года Марком Отто и Джейкобом Торнтоном в Twitter Inc., Bootstrap вскоре обрела популярность за пределами Twitter после того, как была открыта из открытых источников. Он продолжал расти как самый быстрый интерфейс для веб-разработчиков во всем мире.

Сегодня Bootstrap стал стандартом де-факто для запуска нового проекта веб-сайта с его архитектурой CSS и JS, обеспечивающей отзывчивые мобильные компоненты и общие компоненты пользовательского интерфейса, а также поддержку большинства современных браузеров.

Соединение Bootstrap с Vue.js

Как мы упоминали ранее, использование Bootstrap с Vue.js немного сложнее из-за сильной зависимости динамических компонентов Bootstrap от jQuery. Однако есть по крайней мере несколько хороших проектов, которые находятся в процессе преодоления этого разрыва:

Мы рассмотрим первый вариант здесь, Bootstrap-Vue, так как это самый обновленный и популярный проект.

Bootstrap-Вью

Bootstrap-Vue не только поддерживает компоненты Bootstrap и систему сетки, но также включает поддержку директив Vue.js , что дает нам полный набор функций из экосистемы Vue.js.

Одна из замечательных особенностей Bootstrap-Vue — это наличие онлайн-площадки . Эта игровая площадка перегружена и позволяет нам экспортировать наш код в JSFiddle. Разве это не круто!

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

Начало работы с Bootstrap-Vue с помощью командной строки

Если вы следили за современными тенденциями веб-разработки, вы наверняка знали бы о npm и об установке с ним библиотек. Bootstrap-Vue можно установить с помощью npm с помощью следующей команды:

 npm i bootstrap-vue 

Bootstrap-Vue также предоставляет два шаблона vue-cli, которые могут без проблем создавать наши проекты:

  • Webpack просто : быстрый лес для небольшого применения.
  • Webpack : для более крупных проектов, способных к производству.

Сначала мы устанавливаем vue-cli:

 npm i -g vue-cli 

Затем мы инициализируем наш проект — назовем его начальным — используя простой шаблон webpack, набрав в терминале следующее:

 vue init bootstrap-vue/webpack-simple getting-started 

Мастер откроется. Вы можете нажать Return, чтобы принять значения по умолчанию.

Затем введите:

 cd getting-started npm install npm run dev 

Давайте посмотрим на этот код построчно:

  • Первая строка начинается с vue init создает новый каталог с именем getting-started , где инициализируется новый проект Bootstrap-Vue.
  • С началом работы cd getting-started мы получаем доступ к каталогу нового проекта.
  • npm install заботится об установке всех зависимостей проекта.
  • Наконец, с помощью npm run dev приложение компилируется и запускается в браузере.

Ваша локальная среда должна теперь содержать следующие файлы и папки:

 ├── index.html ├── node_modules │ └── lots of files ├── package.json ├── package-lock.json ├── README.md ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ └── main.js └── webpack.config.js 

Здесь App.vue и main.js являются основными интересующими файлами. Если мы main.js наш текстовый редактор и откроем main.js , мы увидим следующий код, который импортирует таблицу стилей Bootstrap и Bootstrap-Vue:

 import Vue from 'vue' import BootstrapVue from "bootstrap-vue" import App from './App.vue' import "bootstrap/dist/css/bootstrap.min.css" import "bootstrap-vue/dist/bootstrap-vue.css" Vue.use(BootstrapVue) new Vue({ el: '#app', render: h => h(App) }) 

В то же время документ App.vue загружает код переднего плана.

После запуска команды npm run dev страница index.html проекта должна отобразить страницу, подобную приведенной ниже:

Заставка Vue.js

Импорт Bootstrap-Vue с <head> script в разделе <head>

Хотя мы увидели способ установки и работы с Bootstrap-Vue с помощью npm, давайте также рассмотрим более простой вариант: включение Bootstrap-Vue с использованием тега script в нашем HTML-документе:

 <!-- Add Bootstrap and Bootstrap-Vue CSS to the <head> section --> <link type="text/css" rel="stylesheet" href="https://unpkg.com/bootstrap/dist/css/bootstrap.min.css"/> <link type="text/css" rel="stylesheet" href="https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css"/> <!-- Add Vue and Bootstrap-Vue JS just before the closing </body> tag --> <script src="https://unpkg.com/vue/dist/vue.min.js"></script> <script src="https://unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script> 

Это подтянет минимизированную последнюю версию каждой библиотеки. На момент написания статьи это Bootstrap v4.1.3, Bootstrap-Vue v2.0.0-rc.11 и Vue v2.5.17.

Если по какой-то причине вам требуется поддержка устаревших браузеров, вы также можете включить @ babel / polyfill , который будет эмулировать полноценную среду ES2015 +:

 <script src="https://unpkg.com/babel-polyfill@latest/dist/polyfill.min.js"></script> 

Теперь мы можем работать с Vue.js, Bootstrap и Bootstrap-Vue на нашей локальной машине.

Работа с компонентами Bootstrap-Vue

Для демонстраций в этой статье мы будем использовать CodePen . Чтобы настроить его, давайте создадим наше перо, нажмите на значок настроек и импортируем следующий CSS на вкладке CSS:

 https://unpkg.com/[email protected]/dist/css/bootstrap.min.css https://unpkg.com/[email protected]/dist/bootstrap-vue.css 

На вкладке JavaScript давайте импортируем библиотеки Vue и Bootstrap Vue:

 https://unpkg.com/[email protected]/dist/vue.min.js https://unpkg.com/[email protected]/dist/bootstrap-vue.min.js 

Также обязательно выберите Babel в качестве препроцессора JavaScript.

Наконец, давайте нажмем кнопку « Сохранить и закрыть» . Теперь мы готовы начать играть с компонентами Bootstrap-Vue.

Создание компонента оповещения Bootstrap-Vue

Чтобы создать компонент оповещения Bootstrap-Vue, мы добавим следующее в нашу область HTML-кода CodePen:

 <div id='app'> <b-alert show> Hello {{ name }}! </b-alert> </div> 

Далее мы добавляем экземпляр Vue в область JS:

 new Vue({ el: "#app", data: { name: "Sitepoint" } }); 

В результате мы должны увидеть предупреждение «Hello Sitepoint!» В области просмотра вывода:

Приведенный выше код отображает простой компонент предупреждения Bootstrap с использованием Vue.js и Bootstrap-Vue. Далее, мы собираемся изменить некоторые параметры для этого окна предупреждения, чтобы сделать его более интересным. Например, чтобы сделать окно предупреждения недопустимым, давайте добавим ключевое слово dismissible рядом с директивой show :

 <b-alert show dismissible> Hello {{ name }}! </b-alert> 

Теперь в предупреждении отображается кнопка со значком отклонения, которая при нажатии удаляет предупреждение со страницы. Попробуй сам!

Обратитесь к официальной документации для предупреждений Bootstrap-Vue для более настраиваемых реквизитов.

Построение динамического компонента Bootstrap-Vue Listview

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

Bootstrap-Vue предоставляет два компонента, которые вместе помогают нам создать список: <b-list-group> и <b-list-group-item> . Мы можем думать о первом как о HTML-эквиваленте <ul> или <ol> , тогда как последний отображает элемент <li> .

Мы начнем с создания статического списка некоторых смартфонов:

 <div id='app'> <b-list-group> <b-list-group-item href="http://apple.com">iPhone</b-list-group-item> <b-list-group-item>OnePlus 3T</b-list-group-item> <b-list-group-item>Samsung Galaxy 8</b-list-group-item> </b-list-group> </div> 

Теперь мы добавляем наш экземпляр Vue на панель JavaScript:

 new Vue({ el: '#app' }); 

И вот наш простой список:

Статический Bootstrap-Vue список

Однако это далеко не динамический список. Давайте добавим директиву Vue.js v-for в разметку компонента list, чтобы отобразить несколько элементов списка из массива:

 <b-list-group-item v-for="item in items"> {{ item.message }} </b-list-group-item> 

Далее давайте добавим массив items в экземпляр Vue:

 new Vue({ el: '#app', data: { items: [ { message: 'Nokia 8' }, { message: 'OnePlus 5T' }, { message: 'Samsung Galaxy S9' } ] } }); 

А вот данные нашего смартфона, отображаемые в компоненте списка Bootstrap-Vue:

Динамический список Bootstrap-Vue

Поиграйте с живой демонстрацией:

В качестве проблемы для вас попробуйте сделать этот список еще более динамичным, добавив вызов Ajax для извлечения содержимого из API или из RSS-канала.

Прослушивание событий на значках Bootstrap

Bootstrap имеет компонент значка, который полезен для подсчета количества предметов или их маркировки. Например, в приведенном выше примере списка мы можем добавить значок в элемент списка iPhone, указывающий количество вариантов (пять версий iPhone).

С Bootstrap-Vue мы можем использовать компонент <b-badge> как дочерний <b-list-group-item> элемента <b-list-group-item> чтобы указать количество различных типов iPhone следующим образом:

 <b-list-group-item href="http://apple.com">iPhone <b-badge>5</b-badge></b-list-group-item> 

Это должно сделать список похожим на это:

Bootstrap-Vue список со значком

Теперь давайте добавим кнопку « Поделиться» на нашей странице, чтобы отслеживать количество публикаций на странице. Для этого мы можем использовать компонент <b-button> для создания кнопки Bootstrap, а внутри кнопки мы вложим дочерний элемент <b-badge> :

 <div class="text-center"> <b-button variant="primary" size="sm"> Share on Twitter <b-badge variant="light">{{ share_count }}</b-badge> </b-button> </div> 

Мы модифицируем наш код JavaScript, добавив переменную share_count , которая будет отслеживать количество раз, когда наша страница используется совместно:

 new Vue({ el: '#app', data: { share_count:0 } }); 

Это должно дать нам следующий вывод:

Значок кнопки «Bootstrap-Vue»

Обратите внимание, кнопка все еще не является динамической. То есть он не будет увеличивать счетчик общего ресурса, когда мы нажимаем кнопку « Поделиться в Twitter» , так как мы еще не добавили прослушиватель событий для кнопки. Мы будем использовать v-on директиву Vue.js для прослушивания события нажатия кнопки:

 <b-button variant="primary" size="sm" v-on:click="share_count += 1"> 

Это заставляет переменную share_count увеличиваться всякий раз, когда мы нажимаем на кнопку. Код для значка не нужно менять, поскольку он уже связан с переменной share_count . Поэтому при каждом нажатии share_count переменная share_count увеличивается, как и значок.

В этом прелесть привязки данных Vue.js !

Вывод

В этом руководстве мы увидели, как использовать Bootstrap-Vue для добавления компонентов, подобных Bootstrap, в приложения Vue.js.

Теперь все для вас: создайте следующую потрясающую веб-страницу Bootstrap-Vue и поделитесь ею со всем миром!

Если у вас есть основы Bootstrap за поясом, но вы не знаете, как поднять свои навыки Bootstrap на следующий уровень, ознакомьтесь с нашим курсом «Создайте свой первый сайт с Bootstrap 4», чтобы быстро и весело познакомиться с мощью Bootstrap.