一篇文章介绍前端mitt
1.概述
mitt是一个轻量级的事件总线库,用于在js中实现事件发布于订阅。核心思想是通过一个中央时间总线来管理不同组件或模块之间的通信。mitt非常小(约200字节),且不依赖任何第三方库,因此非常适合和在需要事件通信的场景中使用。
2.主要特点
-
轻量级:体积非常小,适合在性能敏感的应用中使用。
-
无依赖:不依赖任何第三方库,纯js实现。
-
简单易用:API设计简洁,学习成本低。
-
灵活:支持任意事件类型和参数。
3.安装
你可以通过 npm 或 yarn 来安装 mitt:
npm install mitt
或者
yarn add mitt
4.使用示例
1.创建事件总线
首先,需要创建一个事件总线实例:
import mitt from 'mitt'
const emitter = mitt()
2.订阅事件
可以通过on的方法来订阅事件:
emitter.on('eventName',(data)=>{
console.log('事件触发了,数据是:', data)
})
3.发布事件 通过emit方法来触发事件:
emitter.emit('eventName', {message:'Hellow, mitt!'})
4.取消订阅
可以通过off方法来取消订阅:
const handler = (data) => {
console.log('事件触发了,数据是:', data)
}
emitter.on('eventName', handler)
// 取消订阅
emitter.off('eventName', handler)
5.清除所有事件
使用all.clear()清除所有事件监听器
完整示例
import mitt from 'mitt';
// 创建事件总线
const emitter = mitt();
// 订阅事件
emitter.on('greet', (data) => {
console.log('收到问候:', data.message);
});
// 发布事件
emitter.emit('greet', { message: 'Hello, mitt!' });
// 取消订阅
const handler = (data) => {
console.log('再次收到问候:', data.message);
};
emitter.on('greet', handler);
// 再次发布事件
emitter.emit('greet', { message: 'Hello again!' });
// 取消订阅
emitter.off('greet', handler);
// 清除所有事件
emitter.all.clear();
总结
mitt是一个非常轻量级且易于使用的事件总线库,适合在需要组件通信场景中使用。它的api设计简洁,学习成本低,且不依赖于任何第三方库,非常适合在小型项目或性能敏感的应用中使用。