Nodejs event的花样玩法

Nodejs event的花样玩法

我昨天写了一个包,因为我发现这个包很有出现的必要,写完之后我到现在还没有想到有什么用处,亲们觉得这个包有用吗? 包的代码在这里

下面是我的readme regular expression in event a simple event system accept regular expressions

var RegularEvent = require('regularevent');

var re = new RegularEvent();

re.on(/endOf/, console.log);

re.emit(‘endOfDay’, ‘go to sleep’); re.emit(‘endOfWeek’, ‘have a nice weekend’); re.emit(‘endOfWrold’, ‘yeah!!’); // all above will trigger the listen


7 回复

Nodejs Event 的花样玩法

大家好!今天我要分享一个有趣的小项目,它是一个基于正则表达式的事件系统。通过这个系统,你可以使用正则表达式来监听事件,从而实现更灵活的事件处理机制。

项目介绍

这个项目叫做 regularevent,你可以在 GitHub 上找到它的源码。这个包的主要目的是为了提供一种更加灵活的方式来处理事件监听,通过使用正则表达式匹配事件名称。

使用示例

下面是一些简单的使用示例,展示了如何使用 regularevent 来处理各种事件。

// 引入 regularevent 包
const RegularEvent = require('regularevent');

// 创建一个新的 RegularEvent 实例
const re = new RegularEvent();

// 监听以 "endOf" 开头的所有事件
re.on(/endOf/, console.log);

// 触发不同的事件
re.emit('endOfDay', 'go to sleep'); // 输出: [ 'endOfDay', 'go to sleep' ]
re.emit('endOfWeek', 'have a nice weekend'); // 输出: [ 'endOfWeek', 'have a nice weekend' ]
re.emit('endOfWorld', 'yeah!!'); // 输出: [ 'endOfWorld', 'yeah!!' ]

// 你也可以使用更复杂的正则表达式
re.on(/^start[A-Z]/, (event, data) => {
    console.log(`Starting ${event}:`, data);
});

re.emit('startDay', 'getting up');
re.emit('startMeeting', 'discussing project');

解释

  1. 创建实例:首先,我们创建了一个新的 RegularEvent 实例。
  2. 监听事件:通过 on 方法,我们可以监听特定模式的事件。在这个例子中,我们监听了所有以 “endOf” 开头的事件。
  3. 触发事件:通过 emit 方法,我们可以触发一个事件,并传递一些数据给监听器。
  4. 复杂正则表达式:我们还可以使用更复杂的正则表达式来监听特定模式的事件,例如以大写字母开头的事件。

总结

这个项目虽然看起来可能没有实际应用场景,但其实它可以用于很多场景,比如日志记录、状态机管理等。通过使用正则表达式,我们可以实现更灵活的事件监听机制,这为 Node.js 应用提供了更多的可能性。

希望这个小项目能给你带来一些灵感,也欢迎你在 GitHub 上提出问题或贡献代码!


希望这段内容对你有所帮助,如果你有任何问题或建议,欢迎留言讨论!


有意思… 用正则过滤事件, 不过干嘛不在发事件的时候就限制事件名呢?

做灵活了反而蛋疼不是吗,我宁愿多做一个函数来代替这种正则的写法

容易把自己玩死,慎用。。

这就是redis的psubscribe

因为我发现这个包很有出现的必要,写完之后我到现在还没有想到有什么用处

读不懂啊, 这句话 _(:3」∠)_

这个包 regularevent 提供了一种使用正则表达式来监听事件的方法,这确实是一种非常有趣且灵活的实现方式。通过这种方式,你可以根据事件名的模式来订阅和触发事件,而不仅仅是依赖于具体的事件名。

示例代码解析

让我们先看一段代码示例,以更好地理解如何使用 regularevent 包:

const RegularEvent = require('regularevent');

const re = new RegularEvent();

// 订阅所有以 "endOf" 开头的事件
re.on(/endOf/, console.log);

// 触发不同名称的事件
re.emit('endOfDay', 'go to sleep');
re.emit('endOfWeek', 'have a nice weekend');
re.emit('endOfWorld', 'yeah!!');

在这个例子中:

  1. 我们创建了一个新的 RegularEvent 实例。
  2. 使用正则表达式 /endOf/ 订阅了所有以 “endOf” 开头的事件。
  3. 触发了三个不同的事件(endOfDay, endOfWeek, endOfWorld),这些事件都符合我们订阅的正则表达式模式。

因此,这三个事件都会触发相应的处理函数(在这里是 console.log)。

应用场景

这种模式可以用于许多实际场景中,比如:

  • 日志系统:可以根据日志级别或模块名称的模式来订阅不同的日志事件。
  • 游戏开发:可以根据角色状态的变化模式来触发不同的行为。
  • 系统监控:可以根据错误码或警告信息的模式来订阅并处理特定类型的报警。

总之,使用正则表达式来订阅事件是一种非常灵活和强大的方法,可以大大增加事件系统的灵活性和可维护性。

回到顶部