@beautywe/plugin-event

1.0.1 • Public • Published

介绍

CircleCI NPM Version NPM Downloads npm bundle size Coverage Status

Feature

  1. 发布/订阅

安装

$ 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 页面被微信小程序环境销毁了,那么事件队列也会被销毁。

License

This project is licensed under the MIT license.

Copyright (c) JerryC Huang (huangjerryc@gmail.com)

Package Sidebar

Install

npm i @beautywe/plugin-event

Weekly Downloads

2

Version

1.0.1

License

MIT

Unpacked Size

13.9 kB

Total Files

7

Last publish

Collaborators

  • jerryc