Как использовать Bootstrap 5 с VueJS 3

В настоящее время я изучаю Vue.js и имею некоторый опыт работы с Bootstrap. Когда я увидел, что с Vue.js можно использовать Bootstrap, я решил попробовать. Мой код довольно прост: раскрывающийся список и всплывающее окно. Выпадающий список работает, а всплывающее окно - нет. Я использую Bootstrap 5 и Vue.js 3. Я также установил popper-js/core. Нужен ли моему файлу main.js дополнительный импорт? Кстати, я использовал vue/cli для создания своего проекта.

app.vue

<template>
  <img alt = "Vue logo" src = "./assets/logo.png">
  <HelloWorld msg = "Welcome to Your Vue.js App"/>
  <h1>Bootstrap</h1>
    <div class = "container">
      <div class = "btn-group">
        <button type = "button" class = "btn btn-danger dropdown-toggle" data-bs-toggle = "dropdown" aria-expanded = "false">
          Action
        </button>
        <ul class = "dropdown-menu">
          <li><a class = "dropdown-item" href = "#">Action</a></li>
          <li><a class = "dropdown-item" href = "#">Another action</a></li>
          <li><a class = "dropdown-item" href = "#">Something else here</a></li>
          <li><hr class = "dropdown-divider"></li>
          <li><a class = "dropdown-item" href = "#">Separated link</a></li>
        </ul>
      </div>  
      <button type = "button" class = "btn btn-secondary" data-bs-container = "body" data-bs-toggle = "popover" data-bs-placement = "top" data-bs-content = "Top popover">Popover on top</button>
      <button type = "button" class = "btn btn-secondary" data-bs-container = "body" data-bs-toggle = "popover" data-bs-placement = "right" data-bs-content = "Right popover">Popover on right</button>
      <div class = "text-center my-3">
        <b-button v-b-popover.hover.top = "'I am popover directive content!'" title = "Popover Title">Hover Me</b-button>
        <b-button id = "popover-target-1">
          Hover Me
        </b-button>
        <b-popover target = "popover-target-1" triggers = "hover" placement = "top">
          <template #title>Popover Title</template>
          I am popover <b>component</b> content!
        </b-popover>
      </div>
    </div>

</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

main.js

import { createApp } from 'vue'
import App from './App.vue'
import 'bootstrap/dist/css/bootstrap.min.css'
import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'

const app = createApp(App);

app.mount('#app');

// Initialize popovers globally
app.directive('popover', {
  mounted(el) {
    new bootstrap. Popover(el)
  }
});

список НПМ

$ npm list
[email protected] D:\projects\VueWorkspace\build-a-bot
├── @babel/[email protected]
├── @babel/[email protected]
├── @floating-ui/[email protected]
├── @popperjs/[email protected]
├── @vue/[email protected]
├── @vue/[email protected]
├── @vue/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

пакет.json

...
  "dependencies": {
    "@floating-ui/vue": "^1.0.6",
    "@popperjs/core": "^2.11.8",
    "bootstrap": "^5.3.3",
    "core-js": "^3.8.3",
    "vue": "^3.2.13"
  },
  "devDependencies": {
    "@babel/core": "^7.12.16",
    "@babel/eslint-parser": "^7.12.16",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3"
  },

...

Немного сбивает с толку: вы используете bootstrap-vue или просто загрузку, исходя из ваших зависимостей, я полагаю, только загрузку?

Steven B. 30.04.2024 21:48

@StevenB., я установил bootstrap-vue. (Я предполагал, что это то, что мне нужно.)

PKonstant 01.05.2024 16:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
2
201
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Bootstrap-vue находится в v2.23.0 с 2022 года, он же ныне заброшенный проект, который не поддерживает Vue3 полностью.

Bootstrap v5, о котором вы говорите, — это обычный CSS-фреймворк.

Эти 2 не одно и то же. Вы можете реализовать структуру CSS в VueJS, но, как вы, возможно, заметили, у вас действительно возникнет много проблем, касающихся всей интерактивности JS.
Вам также будет сложно управлять любым состоянием (например, «мое модальное окно сейчас открыто»).
Тогда у вас также возникнет много проблем с производительностью, потому что нет смысла загружать всю структуру CSS, если вы не используете каждую ее часть на всех своих страницах.

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

Итак, чтобы вы не выстрелили себе в ногу, вот хороший веб-сайт , на котором представлены все хорошие и жизнеспособные решения на сегодняшний день. Все они имеют свои собственные характеристики и способы применения, но у вас будет большой выбор и вам будет гораздо проще проводить время. Их документация также довольно понятна и проста в использовании.

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

TLDR: извините, что на самом деле не ответил на ваш вопрос, но спасибо мне позже за то, что я посоветовал вам не трогать Boostrap.

если я правильно вас понял, Bootstrap был великолепен для своего времени, но есть ли сегодня лучшие и более жизнеспособные варианты?

PKonstant 01.05.2024 16:20

@PKonstant точно. Bootstrap похож на jQuery. Удивительно, когда он появился, потому что у него были уникальные предложения. В настоящее время они устарели и существуют лучшие решения.

kissu 01.05.2024 23:38

Я проверил веб-сайт, на который вы ссылались, и это отличная отправная точка. Я выбрал три: Quasar, Tailwind и PrimeVue. В итоге я выбрал PrimeVue. Еще раз спасибо за вашу помощь и указание мне в правильном направлении.

PKonstant 03.05.2024 15:59

@PKonstant, это действительно отличный выбор! Добро пожаловать и наслаждайтесь.

kissu 03.05.2024 16:13

Другие вопросы по теме