javascript中的组件间通信

Tau*_*ren 5 javascript jquery javascript-events

我需要在Web应用程序中进行组件间通信,并且正在考虑实现此目的的不同方法.我有一些想法,但欢迎其他想法.

首先,一个快速而简单的例子.我在页面上有两个异步加载的独立组件.按组件,我的意思是一大块HTML,它有一个与之关联的javascript对象,包括html中节点上基于jquery的行为.当用户与一个组件交互时,更改应该在另一个组件中进行,反之亦然.

这里要记住的关键是每个组件应该是一个独立的单元.它可以在应用程序的不同部分,甚至不同的应用程序中重复使用.所以它不知道页面上是否存在其他组件.

我目前对解决方案的想法涉及让组件监听他们感兴趣的自定义事件以及在发生操作时发送自定义事件.因此,每个组件都会侦听由另一个组件触发的事件.

问题在于,由于异步加载,一个组件加载可能比另一个加载更长.事件可能会很快发送并丢失.在某些情况下,这可能没问题,但在某些情况下,我需要确保组件发送的所有事件都被消耗掉.

所以这里有一些相关的问题:

  1. 事件触发后会发生什么?如果在触发时没有听众,它是否会消失?

  2. 有没有办法检测触发甚至是消耗还是丢失?

  3. 每个组件了解其他组件有哪些好方法?

  4. 是否有任何现有的开源JavaScript项目或jquery插件处理这些类型的东西?

关于问题#3,我认为每个组件都可以发出某种注册事件,包括它监听的事件类型和它注册的组件列表.组件会监听这些注册事件.使用定时器的某种注册逻辑将用于确保在组件加载过程中正确的组件一起注册.注册完成后,组件就能发送正常事件.

fun*_*ost 1

Web 服务是一个值得参考的很好的模型。当您拥有用于云计算(或任何分布式计算平台)的互连 Web 服务时,它们通常会在它们之间实现某种消息队列或“总线”。

您可能会考虑创建一个处理“事件”的全局消息队列,并且可以将其发布给订阅者或保留它直到对其采取操作(通常称为作业)。