Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >越写悦快乐之Vue项目如何集成EventBusVue Bus

越写悦快乐之Vue项目如何集成EventBusVue Bus

原创
作者头像
前端小tips
发布于 2021-11-30 07:52:39
发布于 2021-11-30 07:52:39
36200
代码可运行
举报
文章被收录于专栏:前端文章小tips前端文章小tips
运行总次数:0
代码可运行

今天的越写悦快乐之系列文章为大家带来Vue项目如何集成EventBus。有过Vue开发经验的小伙们都知道,多个组件之间进行数据的传递或者共享在Vue项目中很是常见,我们如何在不引入Vuex的情况下该如何共享数据呢?今天的文章我为大家带来这篇文章,希望大家喜欢。

Event是什么

  • Event是HTMLDOM对象中事件的状态,它可以触发页面元素的行为,比如鼠标 / 键盘属性、事件句柄、以及多个浏览器支持的标准Event事件。
  • 在Vue中表示一个Vue实例的方法,比如$on$off$emit

开发环境

  • Window 10.0.17763
  • Node 10.15.3
  • Yarn 1.16.0
  • Vue 2.6.10

接入步骤

添加依赖

  • CDN方式 <!-- development version --> <script src="https://cdn.jsdelivr.net/npm/vue-bus/dist/vue-bus.js"></script> <!-- production version --> <script src="https://cdn.jsdelivr.net/npm/vue-bus/dist/vue-bus.min.js"></script>
  • NPM方式

npm install vue-bus --save

  • YARN方式

yarn add vue-bus -S

引入

我们在项目的入口文件src/main.js中使用Vue.use()来挂载到Vue对象上,可参考如下写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'
import VueBus from 'vue-bus'
​
Vue.use(VueBus)

使用

最后我们在组件文件Event.vue中提供的方法(组件生命周期)中声明和监听Bus,下面给出一个完整的Vue组件的定义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div>
    <van-nav-bar 
      :title="pageTitle" 
      fixed/>
  </div>
</template><script>
import { NavBar, Toast } from 'vant'
export default {
  name: 'Event',
  components: {
    [NavBar.name]: NavBar,
    [Toast.name]: Toast
  },
  data() {
    return {
      // 页面标题
      pageTitle: '我',
    }
  },
  created() {
    this.$bus.on('add-todo', this.addTodo);
  },
  beforeDestroy() {
    this.$bus.off('add-todo', this.addTodo);
  },
  methods: {
    addTodo() {
      this.$bus.emit('add-todo', { text: this.newTodoText });
      this.newTodoText = '';
    }
  }
}
</script><style lang="less" scoped>
.van-cell-group {
  margin-top: 48px;
}
</style>

那我们在组件创建和销毁的过程中检测addTodo方法的调用,也就是精确控制页面的行为。

参考

当然我们也可以从Vue中创建一个Bus对象,然后绑定到一个Vue实例上,然后在组件中使用this.$bus.on方法来注册事件。

个人收获和感想

通过以上知识点的梳理,我们知道了父子组件之间如何进行数据通信,以及不同组件之间如何共享数据,并通过合适的架构设计来保证业务中数据的共享和流动,同时为后续的升级迭代提供可扩展的支持和平滑升级,我相信除了这种方式外,也会有其它数据通信的方式,在前端领域不断更新变化的时代,我们只有深入底层理解原理,再加上一定经验的实践会给我们业务的发展提供充分有力的保障,更能打破信息壁垒,通过不同层次的学习方式来努力提升技术水平,构建更加稳定安全的产品或者服务,我相信产品的最大价值就是为用户不断创造价值,对此我深信不疑,更希望大家保持学习的热情,完善自己的知识技术体系,打造属于我们自己的平台或者产品。若是我的文章对你有所启发,那将是我莫大的荣幸。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
vue中使用中央事件总线bus 原
    vue中父组件向子组件传值使用props,非父子组件间传值时可以使用事件总线,或者使用vuex,来看下事件总线的例子。
克虏伯
2019/04/15
8920
vue中使用中央事件总线bus
                                                                            原
Vue:如何实现自定义插件?附示例源码。
像惯常使用过的 axios、vue-router、vuex、element-ui、vant 等,这些都是插件。插件可以视为从外部引入的,封装好的,功能较为完备的功能性组件库。
LIYI
2019/12/03
1.6K0
VUE2全家桶精讲
概念:Vue (读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。
HelloWorldZ
2024/03/20
9900
VUE2全家桶精讲
04 . Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
vue组件 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的
iginkgo18
2020/11/24
1.6K0
04 .  Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
Web前端-Vue.js必备框架(三)
vue是一款渐进式javascript框架,由evan you开发。vue成为前端开发的必备之一。
达达前端
2019/07/03
1.8K0
Web前端-Vue.js必备框架(三)
~<Strong>-要-模-拟</Strong> Vue 响应式原理
https://juejin.cn/post/6946120511713705992
zz_jesse
2021/05/07
5440
一篇文章,Vue快速入门!!!
MVVM源自于经典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更容易管理和使用。其作用如下:
全栈程序员站长
2022/08/19
2K0
一篇文章,Vue快速入门!!!
Vue学习笔记
其中最重要的就是ViewModel VieModel是为了实现数据的双向绑定 目的就是为了解耦
小王不头秃
2024/06/19
1750
老司机读书笔记——Vue学习笔记
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:
老司机Wicky
2018/08/22
3.5K0
老司机读书笔记——Vue学习笔记
「后端小伙伴来学前端了」Vue中全局事件总线(GlobalEventBus)原理及探究过程
上一篇文章写了 Vue 中的自定义事件,自定义事件是全局事件总线基础。我在上一篇文章中埋下了一个小小的伏笔。如下图:
宁在春
2022/10/31
6640
「后端小伙伴来学前端了」Vue中全局事件总线(GlobalEventBus)原理及探究过程
前端(五)-Vue简单基础
你可以用v-model指令在表单、及元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇, 但v-model本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。   注意:v-model会忽略所有表单元素的value、checked、selected特性的初始值而总是将Vue实例的数据作为数据来源。你应该通过JavaScript在组件的data选项中声明初始值!
化羽羽
2022/10/28
1K0
vue-cropper
演示demo:http://github.xyxiao.cn/vue-cropper/example/
阿超
2022/10/27
6100
vue-cropper
vue组件传值与插槽详解
*子组件实例里写props对象,绑定属性,属性里可设置传入的数据类型和无数据传入时的默认值
生南星
2019/07/22
2.3K0
简学Vue
官网文档:https://cn.vuejs.org/v2/guide/forms.html#%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95
Rochester
2020/09/01
2.3K0
简学Vue
「后端小伙伴来学前端了」Vue中利用全局事件总线改造 TodoList 案例
这篇就打算用全局事件总线来改造一下之前写的TodoList案例,一天学习一点,我们一起进步冲。
宁在春
2022/10/31
3630
「后端小伙伴来学前端了」Vue中利用全局事件总线改造 TodoList 案例
vue组件高级(上)
wach侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。例如,监视用户名的变化并发起请求,判断用户名是否可用。
岳泽以
2022/10/26
1.5K0
vue组件高级(上)
Vue3 使用 mitt 实现跨组件通信
emitter.on 第一个参数是消息 key ,第二个参数可以是基本数据、对象、函数!
訾博ZiBo
2025/01/06
2240
Vue3 使用 mitt 实现跨组件通信
在业务代码中常用到的Vue数据通信方式
本文是笔者总结过往项目,在vue使用到的一些数据通信方案,希望在实际项目中有些帮助和思考。
Maic
2022/07/28
5.3K0
在业务代码中常用到的Vue数据通信方式
Vue-组件化
调用方法时,每次都需要进行计算,可以考虑将这个结果缓存起来,采用计算属性可以很方便的做到这一点
张小驰出没
2021/04/25
4180
Vue-组件化
当Vue2遇到Composition API,它们之前到底能擦出怎样的火花?
Composition API是什么?也称为组合式 API。如果你第一次听到这个词,请认真读完这篇文章。
Vam的金豆之路
2021/12/01
1.4K0
相关推荐
vue中使用中央事件总线bus 原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验