• home > webfront > ECMAS > javascript >

    用原生EventTarget取代EventBus(mitt)可好?

    Author:zhoulujun Date:

    vue3取消了vue2里面的EventBUS,官方推进用mitt,但是如过只是的简单的时间通知,干脆直接用原生的EventTarget来做的

    vue3取消了vue2里面的EventBUS,建议使用https://github.com/developit/mitt/

    mport mitt from 'mitt'
    const emitter = mitt()
    
    // listen to an event
    emitter.on('foo', e => console.log('foo', e) )
    
    // fire an event
    emitter.emit('foo', { a: 'b' })
    
    // clearing all events
    emitter.all.clear()
    
    // working with handler references:
    function onFoo() {}
    emitter.on('foo', onFoo)   // listen
    emitter.off('foo', onFoo)  // unlisten

    代码也很简单

    https://github.com/developit/mitt/blob/main/src/index.ts

    但是,如过只是简单的需求,用JS原生的岂不是更好

    EventTarget

    https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget

    该接口主要提供三个实例方法。

    • addEventListener:绑定事件的监听函数

    • removeEventListener:移除事件的监听函数

    • dispatchEvent:触发事件

    具体可以看 阮一峰 老师的教程:https://www.bookstack.cn/read/javascript-tutorial/docs-events-eventtarget.md






    转载本站文章《用原生EventTarget取代EventBus(mitt)可好?》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2022_0923_9275.html