教程推荐:bootstrap教程
vue.js 是一个流行的 javascript 库,用于在短时间内开发原型。这包括用户界面、前端应用、静态网页和本机移动应用。它以易用的语法和简单的数据绑定功能而闻名。
最近,vue.js 生态系统发布了一个新的软件包。它是流行的 bootstrap 框架与 vue.js 的集成。这个包称为 bootstrapvue。它允许我们使用与 bootstrap(v4)集成的自定义组件。
它还支持自定义 bootstrap 组件、网格系统,还支持 vue.js 指令。
在本文中,我们将介绍 bootstrapvue 的基础知识,解释一般概念,演示设置过程,并通过它构建一个迷你 vue.js 项目,以便为你提供更多的实践经验。
为什么选择 bootstrapvue?鉴于 bootstrap是最受欢迎的独立 css 框架(在我看来),很多已经或有意向从vanilla javascript 的框架转移到 vue.js 的开发人员总是发现迁移有点困难,因为 bootstrap 对 jquery 的依赖性很大。
使用 bootstrapvue,任何人都可以从 vanilla.js 或 jquery 切换到 vue.js,而无需担心 bootstrap 对 jquery 的严重依赖,甚至无法找到解决方法。这就是 bootstrapvue 的救援方式。它有助于弥补这一差距,并允许 vue 开发人员能够轻松地在他们的项目中使用 bootstrap。
入门使用 webpack、babel 等模块捆绑包时,最好直接把这些包包含到项目中。为了给你演示并提供了解和使用 bootstrapvue 的实践方法,我们将用 bootstrapvue 设置一个 vue.js 项目,并把它构建到一个功能性的 vue.js 应用中。
先决条件
具备 vue.js 的基本知识可以帮你理解这个演示在你的电脑上全局安装 vue cli 。如果你目前尚未安装,请按照此安装指南进行操作创建一个vue项目首先必须创建一个 vue.js 项目,我们将会用它来演示 bootstrapvue 组件的实现。在首选目录上打开一个终端窗口,然后运行以下命令:
vue create bootstrapvue-demo
如果你没有全局安装 vue cli,请按照此安装指南进行操作后再继续本教程。
上面的命令会显示一个预设的选择对话框,如下所示:
选择 default,然后单击enter继续:
现在,你创建了一个 vue 程序,下面转到新的 vue 项目目录,并使用以下命令启动开发服务器:
cd bootstrapvue-demonpm run serve
你的 vue 应用程序将会在 localhost:8080 上提供服务。在浏览器中打开它,你将看到自己的vue应用程序:
将 bootstrap 和 bootstrapvue 添加到项目中有两种方法可以做到这一点,可以用npm和yarn这样的包管理器或者用cdn链接。
使用npm或yarn
我们将使用npm或yarn安装之前提到的包。切换到项目的根目录并运行下面的任一命令,具体取决于你首选的包管理器:
# with npmnpm install bootstrap-vue bootstrap axios# with yarnyarn add bootstrap-vue bootstrap axios
上面的命令将会安装bootstrapvue和bootstrap包。 boostrapvue包中包含所有bootstrapvue组件,常规bootstrap包含css文件。另外还安装了axios来帮助我们从themealdb api获取程序所需的数据。
使用cdn 要通过cdn将bootstrap和bootstrapvue添加到vue项目,请打开项目公共文件夹中的index.html文件,并将此代码添加到适当的位置:
<!-- public/index.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 bootstrapvue scripts 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>
这将把每个库的缩小版和最新版本引入我们的项目中,非常简单!但是出于本文的目的,我们将使用第一个方法中的包管理器。下面继续设置bootstrapvue包。
设置bootstrapvue接下来,让我们设置刚刚安装的bootstrapvue包。转到你的main.js文件并将这行代码添加到顶部:
//src/main.jsimport bootstrapvue from 'bootstrap-vue'vue.use(bootstrapvue)
在这里做的事情非常简单,我们导入了boostrapvue包,然后用vue.use()函数在程序中注册它,以便vue程序可以识别。
我们还需要将bootstrap css文件导入到项目中。将这段代码段添加到main.js文件中:
//src/main.jsimport 'bootstrap/dist/css/bootstrap.css'import 'bootstrap-vue/dist/bootstrap-vue.css'
在将必要的模块导入vue程序后,你的main.js文件应该和下面的代码段类似:
//src/main.jsimport vue from 'vue'import app from './app.vue'import bootstrapvue from 'bootstrap-vue'import 'bootstrap/dist/css/bootstrap.css'import 'bootstrap-vue/dist/bootstrap-vue.css'vue.use(bootstrapvue)vue.config.productiontip = falsenew vue({ render: h => h(app),}).$mount('#app')
创建bootstrap组件下面开始创建我们的第一个组件,第一个组件是navbar组件。转到组件目录,创建一个名为navbar.vue的文件,并使用以下代码更新它:
//src/components/navbar.vue<template> <div> <b-navbar toggleable="lg" type="dark" variant="success"> <b-container> <b-navbar-brand href="#">mealzers</b-navbar-brand> <b-navbar-toggle target="nav-collapse"></b-navbar-toggle> <b-collapse id="nav-collapse" is-nav> <!-- right aligned nav items --> <b-navbar-nav class="ml-auto"> <b-nav-form> <b-form-input size="sm" class="mr-sm-2" placeholder="search for a meal" v-model="meal" ></b-form-input> <b-button size="sm" class="my-2 my-sm-0" type="submit" @click.prevent="getmeal" >search</b-button> </b-nav-form> <b-nav-item-dropdown right> <!-- using 'button-content' slot --> <template slot="button-content"><em>user</em></template> <b-dropdown-item href="#">profile</b-dropdown-item> <b-dropdown-item href="#">sign out</b-dropdown-item> </b-nav-item-dropdown> </b-navbar-nav> </b-collapse> </b-container> </b-navbar> </div> </template><script>export default { data() { return { meal: '' } }, methods: { getmeal() { ... } }} </script>
navbar组件中包含几个bootstrapvue组件,其中一个是b-navbar组件。它是navbar中其他组件的父组件。如果没有这个组件,navbar中的所有其他组件将无法正确呈现。
可以用type 属性更改navbar上的文本颜色。 navbar的background-color也可以用variant 属性来改变。这些颜色可以是任何正常的bootstrap默认颜色 —— info、primary、success 等。
另一个是b-navbar-brand组件。这是可以呈现网站徽标的地方。它还包含variant和type属性,它们可以分别用于改变background-color和text-color。
其他bootstrapvue组件是:
b-nav-formb-nav-item-dropdownb-dropdown-itemb-navbar-toggleb-collapseb-nav-item(可以用“disabled”属性禁用)b-navbar-navb-nav-item更多bootstrapvue组件的一个美妙之处在于它们默认是响应式的。所以你无需编写额外的代码或用外部库来使其实现响应式。
还有一个组件是card组件。card 组件允许我们在卡中显示图像、文本等。它写做b-card 。为了演示它,让我们在组件目录中创建一个cards.vue文件。然后用下面的代码更新其内容:
//src/components/cards.vue<template> <b-container> <div v-if="meals.length"> <b-row> <div v-bind:key="data.index" v-for="data in meals"> <b-col l="4"> <b-card v-bind:title="data.strcategory" v-bind:img-src="data.strcategorythumb" img-alt="image" img-top tag="article" style="max-width: 20rem;" class="mb-2"> <b-card-text>{{ `${data.strcategorydescription.slice(0,100)}...` }}</b-card-text> <b-button href="#" variant="primary">view food</b-button> </b-card> </b-col> </div> </b-row> </div> <div v-else> <h5>no meals available yet</h5> </div> </b-container></template><script> import axios from "axios"; export default { data() { return { meals: [] }; }, mounted() { axios .get("https://www.themealdb.com/api/json/v1/1/categories.php") .then(response => { this.meals = response.data.categories; }) .catch(err => { console.log(err); }); } };</script>
为了渲染刚刚创建的cards组件,需要修改helloworld.vue文件。打开它并使用以下代码更新:
//src/components/helloworld.vue<template> <div> <cards /> </div></template><script>import cards from './cards.vue'export default { name:'cards', components: { cards }, data() { return { }; },};</script><style scoped></style>
在这里做的是创建一个cards组件并将其嵌入到helloworld.vue文件中。请注意,在cards组件中,有一个生命周期hook来修改数据。数据在被渲染到浏览器之前被填充到b-card组件中。
接下来,更新app.vue文件,用来捕获最近的更改并将正确的组件呈现给浏览器。打开它并使用下面的代码更新:
//app.vue<template> <div id="app"> <navbar /> <helloworld/> </div></template><script> import helloworld from './components/helloworld.vue' import navbar from './components/navbar.vue'; export default { name: 'navbar', components: { navbar, helloworld } }</script>
这是在浏览器上可以看到我们的餐饮程序运行如下:
正如你所看到的,card 没有被正确的布局,所以必须纠正这一点。幸运的是,bootstrapvue有一些可以将我们的card放在网格中的内置组件。
它们是:
b-rowb-col修改cards.vue文件中的代码,使用上面提到的bootstrapvue组件在网格中呈现内容。打开cards.vue文件并使用下面的代码片段更新:
//src/components/helloworld.vue<template> <b-container> <div v-if="meals.length"> <b-row> <div v-bind:key="data.index" v-for="data in meals"> <b-col l="4"> <b-card v-bind:title="data.strcategory" v-bind:img-src="data.strcategorythumb" img-alt="image" img-top tag="article" style="max-width: 20rem;" class="mb-2"> <b-card-text>{{ `${data.strcategorydescription.slice(0,100)}...` }}</b-card-text> <b-button href="#" variant="primary">view food</b-button> </b-card> </b-col> </div> </b-row> </div> <div v-else> <h5>no meals available yet</h5> </div> </b-container></template><script>import axios from "axios";export default { data() { return { meals: [] }; }, mounted() { axios .get("https://www.themealdb.com/api/json/v1/1/categories.php") .then(response => { this.meals = response.data.categories; }) .catch(err => { console.log(err); }); }};</script>
现在刷新浏览器,应该看到一个正确布局的卡片,其中包含渲染内容。
现在有了一个排列工整的餐饮程序。我们用了一些bootstrapvue的组件构建了所有这些。要了解有关bootstrapvue的更多信息,请查看官方文档(https://bootstrap-vue.js.org/docs/)。
迁移如果你想把现有项目从常规bootstrap4迁移到bootstrapvue该怎么办?这将是一件轻而易举的事。这就是你需要做的:
从构建脚本中删除bootstrap.js文件从你的程序中删除jquery,bootstrapvue能独立工作将本机bootstrap标记转换为bootstrapvue自定义组件标记就是这些!通过这三个步骤,你可以将现有项目从依赖jquery的常规bootstrap迁移到更简单的独立bootstrapvue包,而不会破坏任何现有代码。
结论本文通过示例演示了怎样使用bootstrapvue。我们从安装开始,在vue项目中进行设置,最后使用其自定义组件构建mealzers程序的一部分。可以看到,bootstrapvue模块简单易用。如果你有常规bootstrap包的知识,那么使用bootstrapvue将是轻而易举的一件事。
英文地址原文:https://blog.logrocket.com/getting-started-with-bootstrapvue-2d8bf907ef11
更多编程相关知识,请访问:编程入门!!
以上就是快速入门bootstrapvue的详细内容。