javascript - 何时使用 Pub/Sub 与依赖注入(inject)的最佳实践

标签 javascript events dependency-injection

在大多数现代 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/

相关文章:

javascript - 在 Javascript Bookmarklet 中获取 location.href 的更可靠方法?

javascript - Materializecss 工具提示不适用于 Angularjs

javascript - 如何在 JavaScript 中迭代(键、值)?

python - 删除和更改 tkinter 事件绑定(bind)

javascript - 修改地址栏时可以得到事件吗?

android - 具有多个接口(interface)实现的 Dagger Hilt

dependency-injection - JAX-RS:使用关闭/销毁/处置的依赖注入(inject)

javascript - 读取 JSON 消息的值

javascript - 将 javascript var 传输到 html 表单文本框

c# - 使用 IServiceProvider 获取 session 服务