EventBus的缺点及改进升级

 

EventBus很屌,被广泛用于事件分发、工程解耦,现在已经出到了第3版EventBuds3。网上对它的介绍太多了,我这里就不详细展开了。有不熟悉的可以阅读以下这篇文章:

《老司机教你“飙”EventBus3》 https://blog.csdn.net/natural_story/article/details/51444299

EventBus确实很棒,用那么小小的三五十KB轻量代码实现了那么强大的功能,可以把很多复杂混乱的APP整理得干净漂亮很多。用我的话说,EventBus的SLOGAN是:脏活我来干,优雅你来装。

这话一点不错。大型APP里,既要解耦,又要代码书写灵活,永远是一对矛盾体。辛辛苦苦拆得干干净净的两个组件A和B,突然需求一变,A要B干点事,那就要引入接口依赖了。在我看来就是“打洞”,光生生的一面墙,打上一两个三四个黑黢黢的不规则的洞,是很不雅观的,而且是比较费劲的,又脏又累。EventBus就是干这种苦活的。于是用了EventBus,程序员又可以装逼了(你看,我的代码多么解耦,多么优雅)。

然而本文并不是靠吹嘘EventBus来装逼的,相反,我要数落一下它的缺点,并推介一下EventBus4(本人命名的,未得到官方背书)。

缺点如下:

  1. 事件只能通过事件的类名来区分;

这恐怕是EventBus最坑爹的设计了,EventBus吹捧者们难道没注意到它这一点吗?这至少带来了3大问题:

  1. 操作麻烦,每一个事件,都要定义一个类;
  2. 增加方法数;
  3. 导致事件发送者和接收者都依赖耦合事件类;
  1. 事件发生者只能单向广播,无法获得接收者对事件的处理结果;

EventBus能确保事件被送达给感兴趣的监听者。但这一过程是单向的。就像直流电一样,电流永远是从正极流向负极,无法“交流”(在现代社会中,交流电远比直流电用途广嘛)。谁规定的Event应该单向传递呢。很多时候,Event发送者把Event发送出去了,是很希望得到反馈的:小王&

EventBus 和 Vuex 是 Vue.js 中常用的状态管理工具,它们都有各自的优点和缺点EventBus 的优点: 1. 简单易用:EventBus 是 Vue.js 的核心库之一,非常容易上手和集成到项目中。 2. 组件通信:EventBus 提供了一种简洁的方式来实现组件之间的通信,通过事件的发布和订阅机制可以轻松传递数据和触发操作。 3. 解耦组件:使用 EventBus 可以将组件解耦,使得组件之间的依赖性降低,提高代码的可维护性和可重用性。 EventBus缺点: 1. 全局事件:EventBus 的事件是全局共享的,可能会导致事件命名冲突和管理复杂性增加。 2. 难以追踪:由于事件的发布和订阅是在不同的地方处理的,因此很难追踪事件的来源和处理逻辑,增加了代码的维护难度。 3. 性能问题:由于 EventBus 是基于观察者模式实现的,可能会导致性能问题,特别是在大规模事件处理的情况下。 Vuex 的优点: 1. 中心化管理:Vuex 提供了一个中心化的状态管理机制,可以统一管理应用程序的状态,并提供了强大的工具和规则来保证状态的一致性和可预测性。 2. 易于调试:Vuex 为开发者提供了强大的调试工具和开发者工具,可以方便地追踪状态变化和调试应用程序。 3. 响应式更新:Vuex 使用 Vue.js 的响应式机制,当状态发生变化时,相关组件会自动更新,减少手动操作和代码的复杂性。 Vuex 的缺点: 1. 学习成本:Vuex 的概念和使用方法相对复杂,需要一定的学习成本。 2. 适用范围:Vuex 更适用于大型复杂应用程序,对于简单的应用程序可能会引入不必要的复杂性。 3. 状态冗余:使用 Vuex 可能会导致状态的冗余,特别是在多个组件之间需要共享部分状态的情况下。 综上所述,EventBus 适合用于简单的组件通信场景,而 Vuex 适合用于复杂的状态管理场景,根据项目的需求选择合适的工具。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值