vlambda博客
学习文章列表

如何在Bootstrap项目中用Vue.js替代jQuery


Bootstrap是 Web 开发最受欢迎的框架之一,没有比它开发响应式网站项目效率最高了。


随着Vue.js的逐渐流行,更多人们用它来控制页面元素,实现强大互动功能。而jQuery出现了一些技术落后,总结如下:


1、体积。jQuery将给页面增加30KB的尺寸;

2、如果你使用WebPack等打包工具时,如果有jQuery会比较麻烦;

3、当人们用Vue控制DOM时,就不想再用jQuery了。


如果我们用的是Vue,而且也用了Bootstrap框架,那还需要jQuery吗?


其实有一种选择就是:删除jQuery和Bootstrap的JS组件。


在Vue中,有一个很好的项目叫做vue-strap(https://github.com/yuche/vue-strap),它用Vue内置的插件替换了Bootstrap中的jQuery插件。所以,我们可以拥有Vue提供的所有Bootstrap组件,如模式窗口,轮播,标签,选项卡等。


比如你只是用Bootstrap的一些小组件,如果换成Vue.js定制插件是挺简单的事情,也不需要刚才说的vue-strap。


以下展示如何使用Vue.js从头配置一些常见的Bootstrap组件。


Tabs选项卡


先从选项卡开始。每个选项卡,都有一个附带的选项卡窗体。其显示/隐藏是通过active属性控制,在选项卡和相关窗体中添加或移除类来实现的。Vue.js这样处理:


<div id="tabs"> <ul class="nav nav-tabs"> <li><a>Tab 1</a></li> <li><a>Tab 2</a></li> </ul> <div class="tab-content"> <div class="tab-pane">Pane 1</div> <div class="tab-pane">Pane 2</div> </div></div>


我们使用tab变量来跟踪当前选择的选项卡,用active处理在选项目卡和窗体的添加或删除功能。


<div id="tabs"> <ul class="nav nav-tabs"> <li v-bind:class="{ active: tab === 1}" v-on:click="tab = 1"> <a>Tab 1</a> </li> <li v-bind:class="{ active: tab === 2}" v-on:click="tab = 2"> <a>Tab 2</a> </li> </ul> <div class="tab-content"> <div class="tab-pane" v-bind:class="{ active: tab === 1}"> Pane 1</div> <div class="tab-pane" v-bind:class="{ active: tab === 2}"> Pane 2</div> </div></div>



接下来是JavaScript:


new Vue({ el: '#tabs', data: {  // Tab 1 is selected by default tab: 1  }});



为使这篇文章简洁,我们还可以做如下一些改进:


把JavaScript打包到Vue组件中,这样在整个网站都可以重复使用Tabs代码。


要想有真正紧凑的模板和超级快的呈现效果,需要将选项卡和选项卡窗体的内容放到数组数据属性中,并用v-for打印出选项卡以及选项卡窗体的列表项。


模式对话框


模式(也称为模态)对话框是我最喜欢的Bootstrap插件之一,它与Tabs类似,我们通过in 来控制打开或关闭按钮来显示或隐藏模式对话框。


<div id="app" v-bind:class=" { 'modal-open': show }"> <button class="btn btn-primary" v-on:click="toggle"> Open </button> <div class="modal" tabindex="-1" v-bind:class="{ in: show }" v-bind:style="modalStyle"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body"> <p>Vue-powered modal!</p> </div> <div class="modal-footer"> <button class="btn" v-on:click="toggle">Close</button> </div> </div> </div> </div></div>



对于Bootstap的modal对话框,需要处理对话框中的动态内联样式表。我们通过v-bind:style 计算属性来接收“样式对象“来实现。每次变量显示更改时,calculated属性将重新计算:


new Vue({ el: '#app', data: {  show: false  }, methods: { toggle() { this.show = !this.show; } }, computed: { modalStyle() { return this.show ?  { 'padding-left': '0px;', display: 'block' } : {}; } }});

亦可以让Vue过渡为模式窗口,以及退出Dom时,使用淡出淡入动画来增强效果。


怎么样,在下一个项目里使用Vue,移动jQuery。不管是用vue-strap还是自己写组件,都是可以的。


下面来总结一下Vue.js的动人优势:


1、与jQuery相比,Vue的DOM更新系统更出色,不管是UI性能还是响应能力均是;

2、Vue专为构建小型且独立的UI区块而设计,在开始时就专注于此,因此更擅长此任务,其内置的小组件比jQuery插件更有扩展性与可维护性;

3、Bootstrap的插件也比较混乱,通过Vue的灵活模板选项,如JSX,单页组件,渲染函数组、类和样式绑定等,能够有效减轻这种情况。


但是Vue也有一些缺点,它不支持IE 8浏览器。希望本文帮你在下一个Bootstrap项目中成功应用Vue.js,祝你成功。


编译:老夏


相关阅读: