在大多数现代 JS 框架中,松耦合 UI 组件的最佳实践是使用 Pub/Sub 的一些实现。
我的问题是,这不会使调试、维护您的应用变得更加困难,而依赖注入(inject)可以达到相同的结果(松散耦合)吗?
例如,我的组件应该在单击时打开一个对话框。这需要发生,否则 UI 将出现故障。对我来说,让组件显式调用某些对话服务似乎更具可读性。在野外,我看到这个问题更多地通过 pub sub 解决,所以也许我遗漏了一些东西。
同时使用这两种方法时,什么时候应该触发事件或使用注入(inject)的服务完成该操作的最佳位置在哪里?
最佳答案
Pub-sub 非常适合应用程序范围内的事件,在这些事件中,潜在订阅者的数量可能会有所不同,或者在引发事件时未知。
注入(inject)总是设置两者之间的关系,当然,你可以创建装饰器/复合物并注入(inject)由简单对象组成的复合对象,但一旦你开始这样做,它就会变得困惑。
以树和列表为例。单击节点时,应重建列表。听起来像注入(inject)。
但随后您意识到某些节点会触发其他操作、更新标题、在后台触发进程等。引发事件并在许多独立订阅者中处理它会更容易。
我会说,当您组合 View 和 Controller 或 View 及其后备存储时,注入(inject)在通过层时效果很好。 Pub-sub 在同一层的对象之间工作得很好,例如,不同的独立 Controller 交换消息并做出相应的 react 。
关于javascript - 何时使用 Pub/Sub 与依赖注入(inject)的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800337/