使用 RxJS 实现 MessageBus 用于 angularjs 个模块之间的通信

Using RxJS to implement MessageBus for communication between angularjs modules

我可以在 angulajs 应用程序中使用 RxJS 创建一个 pub/sub 消息消息队列吗?我有两个模块: 模块A 模块B 它们作为单独的 npm 包存在,但在 ModuleC 中连接 - 它是主要的 shell.

我不想创建 ModuleD 依赖项并在模块之间创建紧密耦合。所以我的想法是使用 RxJS 创建一个消息总线。 可能吗?

我认为 API 看起来像这样: RxQueue.subscribe("name:of:the:queuemessage", handler => { handler.result } ); RxQueue.create("name:of:the:queuemessage", (observer) => { // implementation of usual Rx subscribtion })

它可能不是您要找的东西,但要在不同的组件和模块之间共享状态和数据,您可以使用 redux/ngrx-store。

Redux 是一种架构,您可以在其中将状态发送到商店。商店将自行更新并在发生变化时通知所有收听它的人。

因此您的模块既可以订阅商店又可以收听事件。如果他们想交流,他们可以向商店发送消息。如果有什么变化,商店会通知所有收听的人。 一个区别是这个存储对象实际上将像临时数据库一样存储这个对象。这不是真正的队列行为。

查看 http://redux.js.org/ 了解更多信息。

我认为这可能最接近您的要求:

rxmqjs/rxmq.js: JavaScript pub/sub 基于 RxJS 的库
https://github.com/rxmqjs/rxmq.js
https://www.npmjs.com/package/rxmq

不angular具体,但我认为这是一件好事。