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

2020年2月24日 319点热度 0人点赞 0条评论

图片


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,祝你成功。

编译:老夏

相关阅读:

Electron + Vue 开发跨平台桌面应用

最全的 Vue 性能优化指南,经典收藏

Electron Fiddle:构建并启动Electron本地应用体验

图片

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

root

这个人很懒,什么都没留下

文章评论