JavaScript Pub / Sub - 消息优先级

时间:2012-03-02 09:06:29

标签: javascript

更多的讨论而不是问题:

我一直在阅读一篇名为“大规模JavaScript应用程序架构的模式”的文章,到目前为止它已经让人大开眼界。

本文作者提倡使用发布者/控制器来使用pub / sub体系结构。没有给出任何真实世界的例子,但在他提倡使用'Amplify.js'的实际幻灯片(http://addyosmani.com/blog/jqcon-largescalejs-2012/)中。

与许多其他pub / sub实现一样,Amplify支持消息优先级。我的理解是,在调解员到位的情况下,对消息进行优先排序的需求会减少,因为调解员会控制在何时何地发生的事情。这是一个有效的观点吗?

消息优先级让我感到害怕,因为当应用程序增长(并且变化)时,您最终会得到一堆模块,这些模块的订阅设置了不同的优先级,并且无法真正控制正在发生的事情。这是一个有效的问题,还是仅仅误解了它们应该如何使用?

2 个答案:

答案 0 :(得分:1)

我会警告不要使用任何复杂版本的pub / sub。不考虑优先级,而是考虑渠道,并假设所有渠道彼此独立处理,并且没有一个具有“优先权”。

另一个警告:不要将模块名称用作通道名称或名称空间。如果这样做,您也可以直接向其他模块提供模块和调用方法。重点是你的模块彼此不了解,不直接沟通。

另一个提示:不要告诉其他模块该做什么。而是报告发送消息的模块内发生的事件。思维的微妙转变是保持模块分离的关键。

答案 1 :(得分:1)

我发现这个用于pub / sub优先级的用法很有帮助,基于这个问题所建议的将它们用作“频道”的好主意。

订阅的优先级,其中1最高,5最低:

  1. 调试消息
  2. 涉及任何DOM布局更改的订阅,会影响元素的大小或位置。
  3. 只涉及样式DOM更改的订阅,这不会影响布局。
  4. 读取DOM中的布局或样式的订阅。
  5. 没有DOM触摸的订阅(纯JS)。
  6. 这应该尽可能地阻止layout thrashing

    很抱歉回复旧帖子,但这是google中“pub sub priority”的第一页,并且没有太多内容。