Node.js 使用EventEmitter进行跨模块通信的Nodejs内存消息总线

Node.js 使用EventEmitter进行跨模块通信的Nodejs内存消息总线,node.js,eventemitter,Node.js,Eventemitter,我是nodejs新手,我正在寻找在我的节点应用程序中使用pub/sub消息传递的方法,以便在模块/包之间进行通信 我们正在研究使用EventEmitter,可能在进程上使用EventEmitter实例,以便它可以充当全局事件总线。但我只是有一种不好的感觉,我不知道有什么好理由不这么做 还是有其他方法 这仅在内存中,不跨多个实例如果愿意,您可以依赖模块缓存。一些模块这样做是为了在需要时保持状态(例如猫鼬) 因此,我的意思是,如果消息总线模块在内部保持其状态,并且只导出发布/订阅功能,那么需要它的任

我是nodejs新手,我正在寻找在我的节点应用程序中使用pub/sub消息传递的方法,以便在模块/包之间进行通信

我们正在研究使用EventEmitter,可能在进程上使用EventEmitter实例,以便它可以充当全局事件总线。但我只是有一种不好的感觉,我不知道有什么好理由不这么做

还是有其他方法


这仅在内存中,不跨多个实例

如果愿意,您可以依赖模块缓存。一些模块这样做是为了在需要时保持状态(例如猫鼬)


因此,我的意思是,如果消息总线模块在内部保持其状态,并且只导出发布/订阅功能,那么需要它的任何其他模块都将获得相同的“实例”,因此能够针对相同的通道发布/订阅。

是的,这会起作用,但节点的模块缓存是如何工作的?如果在多个依赖模块之间使用了多个版本的“自定义事件”模块,那么我们还会得到相同的实例吗?这里有更多详细信息:但基本上缓存在整个应用程序中都是有效的。如果你说的是实际版本(例如1.2和1.3),那么它就不是同一个实例了。如果你只是说你的应用程序中有几个模块需要它,那你应该没问题。我最终使用gloabl来确保我们只有一个模块,而不是像这样的事件总线。你可能希望将“postal js”作为一个选项。我将使用process对象来订阅(.on)和发布(.emit)事件。