簡體   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