使用 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具体,但我认为这是一件好事。
我可以在 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具体,但我认为这是一件好事。