Vue中 事件总线(eventBus)使用

Vue中 事件总线(eventBus)使用,第1张

在Vue中如果两个页面组件中没有任何引入和被引入关系,该如何通信呢?首先可能会想到是Vuex ,但是如果应用程序不需要类似 Vuex 这样的库来处理组件之间的数据通信,就可以考虑 Vue 中的事件总线 ,即 eventBus 来通信。

eventBus 又称为事件总线。在 Vue 中可使用 eventBus 来作为沟通桥梁的概念,就像是所有组件共用相同的事件中心,可向该中心注册发送事件或接收事件,所以组件都可以上下平行地通知其他组件。由于太方便如若使用不慎,就会造成难以维护的“灾难”,因此才需要更完善的 Vuex 作为状态管理中心,将通知的概念上升到共享状态层次。

A组件已经向全局事件总线EventBus发送了一个aMsg事件,这时B组件就可以去aMsg监听这个事件,并可以获得一些数据。

eventBus 适合小项目、数据被更少组件使用的项目,对于中大型项目悄埋数据在很多组件之间使用的情况 eventBus 就不太适用了禅运链。eventBus 其实就是一个发布订贺孙阅模式,利用 Vue 的自定义事件机制,在触发的地方通过 $emit 向全局Bus外发布一个事件,在需要监听的页面,通过 $on 监听事件。最后在组件销毁时,需要通过 $off 将事件移除监听

优点:

1. 易于实现:实现全局事件总线只需要在项目中引入一个单独的模块,可以极大地减少开发时间。

2. 提高组件复用性:使用全局事件总线可以让组件之间更加松散耦合,从而更好桐兄地实现组件复用。

3. 提高程序效率:使用全局逗轮镇事件总线可以减少数据传输的时间和空间,从而提高程序的运行效率。

缺点:

1. 代码可读性差:使用全局事件总线后,代码的可读性会受到影响,因为组件之间的联系变得模糊不清。

2. 无法控制事件触发顺序:全局事件总线无法控制事件触发顺序,这可能会导致程序运行逻辑出现错误。

3. 事件处理器复杂度:全局事件总线的事件处理器复杂度较高,开发者需要花费更多的山粗时间来编写复杂的事件处理器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12424925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存