我需要在Web应用程序中实现组件间通信,并考虑不同的方法来完成此任务。我有一些想法,但也希望听取其他的建议。
首先,举个简单的例子。我在页面上有两个异步加载的独立组件。通过“组件”,我指的是一块HTML代码,它具有一个与之相关联的JavaScript对象,该对象包括基于jQuery的节点行为。当用户与一个组件交互时,应该在另一个组件中进行更改,反之亦然。
这里要记住的关键是,每个组件都应该是一个自包含的单元。它可以在应用程序的不同部分,甚至不同的应用程序中被重复使用。因此,它不知道页面上其他组件的存在。
我目前对解决方案的想法是,让组件监听它们感兴趣的自定义事件,并在发生操作时发送自定义事件。因此,每个组件都监听由另一个组件触发的事件。
问题在于,由于异步加载,一个组件可能需要比另一个组件更长的时间来加载。有可能会太早发送事件并且事件会丢失。在某些情况下,这可能没问题,但在某些情况下,我需要确保组件发送的所有事件都被消耗。
因此,以下是相关问题:
1. 触发事件后会发生什么?如果在触发时没有监听器,它会消失吗? 2. 是否有一种方法可以检测触发的事件是否被消耗或丢失? 3. 每个组件如何知道其他组件的存在? 4. 是否有任何现有的开源JavaScript项目或jQuery插件来处理这些问题?
对于问题#3,我认为每个组件都可以发送某种注册事件,其中包括其所侦听的事件类型和已注册的组件列表。组件将侦听这些注册事件。使用计时器的某种注册逻辑将用于确保在组件加载过程中正确地注册正确的组件。完成注册后,组件将能够发送其正常事件。
首先,举个简单的例子。我在页面上有两个异步加载的独立组件。通过“组件”,我指的是一块HTML代码,它具有一个与之相关联的JavaScript对象,该对象包括基于jQuery的节点行为。当用户与一个组件交互时,应该在另一个组件中进行更改,反之亦然。
这里要记住的关键是,每个组件都应该是一个自包含的单元。它可以在应用程序的不同部分,甚至不同的应用程序中被重复使用。因此,它不知道页面上其他组件的存在。
我目前对解决方案的想法是,让组件监听它们感兴趣的自定义事件,并在发生操作时发送自定义事件。因此,每个组件都监听由另一个组件触发的事件。
问题在于,由于异步加载,一个组件可能需要比另一个组件更长的时间来加载。有可能会太早发送事件并且事件会丢失。在某些情况下,这可能没问题,但在某些情况下,我需要确保组件发送的所有事件都被消耗。
因此,以下是相关问题:
1. 触发事件后会发生什么?如果在触发时没有监听器,它会消失吗? 2. 是否有一种方法可以检测触发的事件是否被消耗或丢失? 3. 每个组件如何知道其他组件的存在? 4. 是否有任何现有的开源JavaScript项目或jQuery插件来处理这些问题?
对于问题#3,我认为每个组件都可以发送某种注册事件,其中包括其所侦听的事件类型和已注册的组件列表。组件将侦听这些注册事件。使用计时器的某种注册逻辑将用于确保在组件加载过程中正确地注册正确的组件。完成注册后,组件将能够发送其正常事件。