// 轻量事件总线(mitt 风格,零依赖),供跨组件通信使用 // 使用方式:emitter.on('event', handler) / emitter.emit('event', payload) / emitter.off('event', handler) const eventMap = new Map() export const emitter = { on(type, handler) { const handlers = eventMap.get(type) if (handlers) { handlers.push(handler) } else { eventMap.set(type, [handler]) } return this }, off(type, handler) { const handlers = eventMap.get(type) if (!handlers) return this if (handler) { const index = handlers.indexOf(handler) if (index > -1) handlers.splice(index, 1) if (!handlers.length) eventMap.delete(type) } else { eventMap.delete(type) } return this }, emit(type, evt) { const handlers = eventMap.get(type) if (handlers) { ;[...handlers].forEach((fn) => fn(evt)) } return this }, clear() { eventMap.clear() return this }, } export default emitter