繁体   English   中英

NPM 包中的 IOC 容器

[英]IOC containers in NPM packages

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

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

所以我正在努力思考,如果在 SDK 中使用 IOC 容器是一种很好的方法。 我个人从未见过提供 IOC 容器的 SDK。

对此有何想法?

经过一番深思熟虑,以下是我对在 SDK 中使用 IOC 容器的想法。

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

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

  • 我们应该对外提供什么样的API
  • 哪些功能可以自定义(是的,并非所有内部组件都应该可以自定义)

如果我们在 SDK 内部使用 IOC 容器,然后将那个 ioc 容器提供给外界,我们是一种吐出所有内部组件,从而违反封装。

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

现在,当我通过这些镜头查看时,我认为 IOC 容器不应该出现在 SDK 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM