为什么在DOM中需要event.stopPropagation()?这是一种糟糕的建筑模式吗?
在日常前端开发中,我经常使用DOM作为全局事件总线,可以访问客户端应用程序的每个部分 但在我看来,其中有一个“特性”是有害的:任何侦听器都可以阻止通过这个“总线”发出的事件的传播 所以,我想知道,这个功能什么时候会有用。允许一个侦听器“禁用”所有其他侦听器是否明智?如果听众不具备做出正确决策所需的所有信息,该怎么办 Upd 这不是关于“什么是冒泡和捕获”或“Event.stopPropagation实际如何工作”的问题。 这是关于“允许任何订阅者影响事件流的好解决方案”的问题 我们需要(我指的是当前在JS中的用法)为什么在DOM中需要event.stopPropagation()?这是一种糟糕的建筑模式吗?,dom,design-patterns,architecture,frontend,event-bus,Dom,Design Patterns,Architecture,Frontend,Event Bus,在日常前端开发中,我经常使用DOM作为全局事件总线,可以访问客户端应用程序的每个部分 但在我看来,其中有一个“特性”是有害的:任何侦听器都可以阻止通过这个“总线”发出的事件的传播 所以,我想知道,这个功能什么时候会有用。允许一个侦听器“禁用”所有其他侦听器是否明智?如果听众不具备做出正确决策所需的所有信息,该怎么办 Upd 这不是关于“什么是冒泡和捕获”或“Event.stopPropagation实际如何工作”的问题。 这是关于“允许任何订阅者影响事件流的好解决方案”的问题 我们需要(我指的是
stopPropagation()
来防止侦听器相互干扰。然而,这不是强制性的
避免停止播放的实际原因:
stopPropagation()
可能会成为一个问题为订阅者提供一种影响流量的方式(我指的是API设计)并没有错;这取决于此功能的需求。它可能对使用它的开发人员有用。例如,
stopPropagation
对很多人都很有用
一些系统实现了
continueX
方法,而不是stopX
。在JavaScript中,当被调用方可能执行一些异步处理(如AJA*请求)时,它非常有用。但是,它不适用于DOM,因为DOM需要及时生成结果。我认为,stopPropagation
是DOM API的一个聪明的设计选择。我认为这个问题最好继续问下去。关于“什么是更好的/更坏的/最好的”这是一个相当广泛的话题