参考文章:https://www.pipipi.net/questions/13598.html
事件总线是对发布-订阅模式的一种实现,它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。
发布订阅模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。
发布订阅模式主要有两个角色:
发布订阅模式有两种实现方式:
事件总线
项目地址:https://github.com/developit/mitt
import mitt from 'mitt'
const emitter = mitt()
// 监听事件
emitter.on('foo', e => console.log('foo', e) )
//监听所有事件
emitter.on('*', (type, e) => console.log(type, e) )
// 触发事件
emitter.emit('foo', { a: 'b' })
// 清除事件
emitter.all.clear()
// working with handler references:
function onFoo() {}
emitter.on('foo', onFoo) // listen
emitter.off('foo', onFoo) // unlisten