如何在我的 Nuxt 应用程序中正确设置 bootstrap-vue?

Posted

技术标签:

【中文标题】如何在我的 Nuxt 应用程序中正确设置 bootstrap-vue?【英文标题】:How to properly setup bootstrap-vue in my Nuxt app? 【发布时间】:2021-10-21 18:23:46 【问题描述】:

我对@9​​87654322@ 应用程序非常陌生,我正在尝试使用Nuxt.js and Vue.js 创建一个Web 应用程序。在使用Nuxt cli 创建项目期间,我添加了Bootstrap-vue

我在创建 Bootstrap modal 时遇到了一些问题,因此我想完全删除 Bootstrap vue 并将旧的普通 Bootstrap 添加到我的应用程序中。我尝试根据此处找到的一些答案添加,但由于某种原因,它没有按预期工作,我的Modal 没有与drop-downs 等一起正确显示。所以我的猜测是我没有正确删除@ 987654331@ 来自我的应用程序并完全添加了Bootstrap

如果我在这里遗漏了什么,请告诉我:

** 移除 Bootstrap-vue ***

    npm i bootstrap-vue --save。 从plugins 文件夹中删除bootstrap-vue.js 文件。 从nuxt-config.js 中删除pluginplugins: ["@/plugins/bootstrap-vue"],

** 安装普通的旧 Bootstrap ** 在我的nuxt-config.js 文件中添加了以下 CDN 链接:

script: [
      
        src: "https://code.jquery.com/jquery-3.6.0.min.js"
      ,
      
        src:
          "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
      
]
link:[
      
        rel: "stylesheet",
        href:
          "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
      ,
      
        rel: "stylesheet",
        href:
          "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
      ]

当我使用Boostrap 创建一个简单的模态并添加下拉菜单后,它不会在模态上显示任何内容

有人可以确认我是否遵循正确的工作流程,还是我遗漏了什么?任何帮助或建议都会非常有帮助。

*** 已更新 ***

以下是我的nuxt-config.js 文件:

import colors from "vuetify/es5/util/colors";

export default 
  // Global page headers: https://go.nuxtjs.dev/config-head
  head: 
    titleTemplate: "%s - openepcis-test-data-generator-ui",
    title: "EPCIS | Test Data Generator",
    htmlAttrs: 
      lang: "en"
    ,
    meta: [
       charset: "utf-8" ,
       name: "viewport", content: "width=device-width, initial-scale=1" ,
       hid: "description", name: "description", content: "" ,
       name: "format-detection", content: "telephone=no" 
    ],
    script: [
      /* 
        src: "https://code.jquery.com/jquery-3.6.0.min.js"
      ,
      
        src:
          "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
      */
    ],
    link: [
       rel: "icon", type: "image/x-icon", href: "/Logo.ico" ,
      
        rel: "stylesheet",
        href:
          "https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css"
      
      /* 
        rel: "stylesheet",
        href:
          "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
      ,
      
        rel: "stylesheet",
        href:
          "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
      */
    ]
  ,

  // Global CSS: https://go.nuxtjs.dev/config-css
  css: ["@/assets/css/styles.css"],

  // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
  plugins: ["@/plugins/bootstrap-vue"],

  // Auto import components: https://go.nuxtjs.dev/config-components
  components: true,

  // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
  buildModules: [
    [
      "@nuxtjs/eslint-module",
      
        fix: true
      
    ],
    ["@nuxtjs/vuetify"],
    ["@nuxtjs/dotenv"]
  ],

  // Modules: https://go.nuxtjs.dev/config-modules
  modules: ["@nuxtjs/axios"],

  // Axios module configuration: https://go.nuxtjs.dev/config-axios
  axios: 
    baseURL: process.env.API_URL,
    headers: 
      "Content-Type": "text/plain"
    
  ,

  // Vuetify module configuration: https://go.nuxtjs.dev/config-vuetify
  vuetify: ,

  // Build Configuration: https://go.nuxtjs.dev/config-build
  build: 
    babel: 
      plugins: [
        ["@babel/plugin-proposal-class-properties",  loose: true ],
        ["@babel/plugin-proposal-private-methods",  loose: true ],
        ["@babel/plugin-proposal-private-property-in-object",  loose: true ]
      ]
    
  ,

  server: 
    port: 5000
  
;

我的plugins/bootstrap-vue.js 中有以下内容:

import Vue from 'vue'
import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
Vue.use(BootstrapVue)

除了以下是模态代码:

<template>
  <div v-if="$store.state.showModal">
    <transition name="modal">
      <div class="modal-mask">
        <div class="modal-wrapper">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <h5 class="modal-title">
                  Add Options
                </h5>
                <button
                  type="button"
                  class="close"
                  data-dismiss="modal"
                  aria-label="Close"
                >
                  <span
                    aria-hidden="true"
                    @click="hideModal"
                  >&times;</span>
                </button>
              </div>
              <div class="modal-body">
                <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                  <a class="dropdown-item" href="#">Action</a>
                  <a class="dropdown-item" href="#">Another action</a>
                  <a class="dropdown-item" href="#">Something else here</a>
                </div>
              </div>
              <div class="modal-footer">
                <button
                  type="button"
                  class="btn btn-secondary"
                  @click="hideModal"
                >
                  Close
                </button>
                <button type="button" class="btn btn-primary">
                  Save changes
                </button>
              </div>
            </div>
          </div>
        </div>
      </div>
    </transition>
  </div>
</template>

<script>
export default 
  components: ,
  data () 
    return 
  ,
  methods: 
    hideModal () 
      this.$store.commit(
        'hideModal'
      )
    
  

</script>

<style>
</style>

【问题讨论】:

您不想修复 Bootstrap Vue 吗?仅使用 Bootstrap 将使您失去所有已经为您完成的组件逻辑。所以,它只会变成一些样式而不是动态的(例如,没有Datepicker)。如果你只想要风格,你可能也应该考虑其他东西。 Bootstrap modal 有什么问题? 附带说明,如果您想要正确安装和使用 jquery 的指南,请点击此处:***.com/a/68414170/8816585 @kissu 实际上我也可以修复Bootstrap Vue。由于我没有找到任何合适的下拉列表和工作流程示例,我想切换到Plain Bootstrap,因为我之前曾短暂使用过它。请让我知道我需要遵循哪些步骤来修复我的Bootstrap vue 并让它与我的Modal 正常工作。 请向我们展示您的 nuxt.config.js 文件,任何与 Boostrap-vue 相关的附加配置,到目前为止已完成,哪些不工作(与预期相比)。 https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css 你为什么要使用这么旧版本的 Bootstrap?特别是如果您使用的是 BootstrapVue,您应该使用 Bootstrap 的 4.5.3 版本。 【参考方案1】:

我不确定您是否需要 Vuetify + BoostrapVue,但如果这不是问题,您可以使用 npx create-nuxt-app my-awesome-project 生成一个全新的项目并在那里选择 BootstrapVue。


否则,您可以按照此处的说明进行操作:https://bootstrap-vue.org/docs#nuxtjs-module

所以,你必须yarn add bootstrap-vue 然后将其添加到您的 nuxt.config.js 文件中即可

export default 
  modules: [
    'bootstrap-vue/nuxt',
  ],

文档中的first example 效果很好

<template>
  <div>
    <b-button v-b-modal.modal-1>Launch demo modal</b-button>

    <b-modal id="modal-1" title="BootstrapVue">
      <p class="my-4">Hello from modal!</p>

      <b-dropdown id="dropdown-1" text="Dropdown Button" class="m-md-2">
        <b-dropdown-item>First Action</b-dropdown-item>
        <b-dropdown-item>Second Action</b-dropdown-item>
        <b-dropdown-item>Third Action</b-dropdown-item>
        <b-dropdown-divider></b-dropdown-divider>
        <b-dryopdown-item active>Active action</b-dryopdown-item>
        <b-dropdown-item disabled>Disabled action</b-dropdown-item>
      </b-dropdown>
    </b-modal>
  </div>
</template>

【讨论】:

以上是关于如何在我的 Nuxt 应用程序中正确设置 bootstrap-vue?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nuxt 正确导入 CSS 模块?

如何在后端使用 Nuxt 和 Django 在我的 axios 请求中发送 CSRFToken?

如何从 Laravel 后端获取数据并在 Vue/Nuxt 前端显示

Nuxt Auth 如何从数据库中删除刷新令牌?

在 Apollo Nuxt 中,如何在方法中访问非默认客户端?

如何以正确的方式在 Nuxt 项目中添加 Vuepress?