- 发布/订阅
$ npm i @beautywe/plugin-event
import { BtApp } from '@beautywe/core';
import event from '@beautywe/plugin-event';
const app = new BtApp();
app.use(event());
app.event.on('hello', msg => console.log(msg));
app.event.trigger('hello', 'I am jc');
// 输出 I am jc
app.event.trigger('hello', 'I am david');
// 输出 I am david
app.event.once('hello', msg => console.log(msg));
app.event.trigger('hello', 'I am jc');
// 输出 I am jc
app.event.trigger('hello', 'I am david');
// 啥都不会发生
// 注销指定事件的所有监听器
app.event.off('event');
// 注销所有事件的所有监听器
app.event.off();
该插件的实现,会在宿主的 theHost._event
中存储事件队列。
这就意味着,多个宿主都引入 event 插件,它们的事件都是相互独立的。
const page = new BtPage();
page.use(event());
const app = new BtApp();
app.use(event());
page.event.on('hello', msg => ...);
app.event.trigger('hello');
// 啥都不会发生
根据 event 的实现原理,如果宿主实例被销毁了,事件队列同样会被销毁。
例如在 A 页面引入了 event,并且注册了很多事件,如果 A 页面被微信小程序环境销毁了,那么事件队列也会被销毁。
This project is licensed under the MIT license.
Copyright (c) JerryC Huang (huangjerryc@gmail.com)