В настоящее время я изучаю 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"
},
...
@StevenB., я установил bootstrap-vue. (Я предполагал, что это то, что мне нужно.)
Bootstrap-vue находится в v2.23.0 с 2022 года, он же ныне заброшенный проект, который не поддерживает Vue3 полностью.
Bootstrap v5, о котором вы говорите, — это обычный CSS-фреймворк.
Эти 2 не одно и то же. Вы можете реализовать структуру CSS в VueJS, но, как вы, возможно, заметили, у вас действительно возникнет много проблем, касающихся всей интерактивности JS.
Вам также будет сложно управлять любым состоянием (например, «мое модальное окно сейчас открыто»).
Тогда у вас также возникнет много проблем с производительностью, потому что нет смысла загружать всю структуру CSS, если вы не используете каждую ее часть на всех своих страницах.
Итак, если вы собираетесь использовать какой-либо CSS-фреймворк, используйте тот, который хорошо поддерживается, активен, имеет большое количество сообщества и поддержки.
Итак, чтобы вы не выстрелили себе в ногу, вот хороший веб-сайт , на котором представлены все хорошие и жизнеспособные решения на сегодняшний день. Все они имеют свои собственные характеристики и способы применения, но у вас будет большой выбор и вам будет гораздо проще проводить время. Их документация также довольно понятна и проста в использовании.
С другой стороны, это неплохо, потому что все веб-сайты, использующие Bootstrap, выглядят одинаково. Эта тенденция в дизайне давно ушла в прошлое.
TLDR: извините, что на самом деле не ответил на ваш вопрос, но спасибо мне позже за то, что я посоветовал вам не трогать Boostrap.
если я правильно вас понял, Bootstrap был великолепен для своего времени, но есть ли сегодня лучшие и более жизнеспособные варианты?
@PKonstant точно. Bootstrap похож на jQuery. Удивительно, когда он появился, потому что у него были уникальные предложения. В настоящее время они устарели и существуют лучшие решения.
Я проверил веб-сайт, на который вы ссылались, и это отличная отправная точка. Я выбрал три: Quasar, Tailwind и PrimeVue. В итоге я выбрал PrimeVue. Еще раз спасибо за вашу помощь и указание мне в правильном направлении.
@PKonstant, это действительно отличный выбор! Добро пожаловать и наслаждайтесь.
Немного сбивает с толку: вы используете bootstrap-vue или просто загрузку, исходя из ваших зависимостей, я полагаю, только загрузку?