0.0.4 • Published 2 years ago
zcrane v0.0.4
zcrane
一个简单实现发布订阅模式的工具库
目录
安装
npm
$ npm install zcrane
yarn
$ yarn add zcrane
使用
JavaScript
// bus.js
import {ZCrane} from "zcrane"
export const zCrane = new ZCrane()
发布
// publisher
import zCrane from "./bus"
zCrane.emit("click")
// 传递参数
zCrane.emit("click", {})
订阅
// subscriber
import zCrane from "./bus"
zCrane.on(EventsEnum.LOGIN,(option)=>{
console.log(option)
})
TypeScript
Crane需接受一个接口,用于定义不同事件发布的参数类型
import {ZCrane} from "zcrane"
// 事件枚举
enum EventsEnum {
LOGIN = "login",
LOGOUT = "logout"
}
// 事件类型
interface Events{
// 例如:login事件发布时传递的参数类型为string | number
[EventsEnum.LOGIN]: string | number
[EventsEnum.LOGOUT]: string | number
}
export const zCrane = new ZCrane<Events>()
// publisher
zCrane.emit(EventsEnum.LOGIN, "login")
// subscriber
zCrane.on(EventsEnum.LOGIN,(option)=>{
console.log(option)
})
API
on
订阅事件
参数 | 描述 | 类型 | 备注 |
---|---|---|---|
EventName | 事件名称 | string/number/symbol | 必选 |
Handler | 事件处理函数 | Function | 可选 |
const handler = () => {}
zCrane.on("click", handler)
emit
发布事件
zCrane.emit("click")
off
取消某个订阅
// on 方法返回一个key,用于取消订阅
const key = crane.on("click")
zCrane.off(key)
offAll
取消某事件全部订阅
// 取消所有关于点击事件的订阅
zCrane.offAll("click")
clear
取消全部订阅
zCrane.clear()