# esBus **Repository Path**: mlt131220/esBus ## Basic Information - **Project Name**: esBus - **Description**: 基于TS的事件管理分发器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-25 - **Last Updated**: 2023-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # esBus 一个简单好用的事件发布订阅类;
# Installation ```typescript npm install es-bus -S ```
# Use(Vue3为例) ```typescript import { createApp } from 'vue' import App from './App.vue' import EsBus from 'es-bus' ``` ### main.ts中注册实例 ```typescript const app = createApp(App); const $bus = EsBus.getInstance();` app.provide("$bus",bus); app.mount('#app'); ``` ### 组件中使用 ```typescript const $bus = inject("$bus"); /** 订阅、注册事件 bus() */ //窗口改变大小监听 $bus.bus("windowResize"); /** 添加事件 add() */ // 窗口大小改变响应 $bus.add("windowResize", () => { console.log("窗口大小改变"); }) $bus.add("windowResize", () => { alert("窗口大小改变第二个事件"); }) /** 发布、触发事件 dispatch() */ const onWindowResize = () => { $bus.dispatch("windowResize"); } window.addEventListener('resize', onWindowResize, false) /** 移除订阅 remove() */ $bus.remove("windowResize") ```
# Hint - 未注册订阅的监听事件会放入暂存器中,在注册后自动添加至改订阅。通俗解释就是在未执行`$bus.bus("windowResize")`前执行了`$bus.add("windowResize",()=>{})`,则add()的事件会放入暂存器中,在bus()时自动添加;