【问题标题】:IOC containers in NPM packagesNPM 包中的 IOC 容器
【发布时间】:2021-07-01 07:55:45
【问题描述】:

在我们公司,我们有内部 SDK,有时在这些 SDK 中使用 inversify 可能会很方便。

但是,我发现管理不同包之间的所有 IOC 容器变得很困难。比如包A依赖包B,那么你需要合并这两个包的容器,然后应用程序C会导入包B和A,然后它必须重新合并所有这些容器。

因此,如果这甚至是在 SDK 中使用 IOC 容器的好方法,那么我正在尝试解决问题。我个人从未见过提供 IOC 容器的 SDK。

有什么想法吗?

【问题讨论】:

    标签: node.js typescript npm inversifyjs


    【解决方案1】:

    经过深思熟虑,以下是我对在 SDK 中包含 IOC 容器的想法。

    1. 它将 SDK 与 IOC 容器的实现结合在一起,这使得在不使用特定容器的项目中重用这个 sdk 变得很困难,比方说 inversify。

    2. 那么我们如何在没有 IOC 容器的情况下实现 DI/IOC? 当我们想到 SDK 时,我们应该想到:

    • 我们应该向外界提供什么样的 API
    • 有什么特点 可以定制(是的,并非所有内部组件都应该是 可定制)

    如果我们在 SDK 内部使用 IOC 容器,然后我们将这个 ioc 容器提供给外部世界,我们就相当于吐出了所有内部组件,从而违反了封装性。

    我认为在没有 IOC 容器的情况下为 SDK 中的子类提供实现是完全正常的,如果我们想允许外部世界自定义该实现,那么我们提供的公共 API 应该允许这种定制化。

    现在,当我审视这些镜头时,我认为 IOC 容器不应该在 SDK 中。

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 2013-05-07
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多