【问题标题】:Handle InversifyJS configuration depending on the environment根据环境处理 InversifyJS 配置
【发布时间】:2018-11-11 08:50:40
【问题描述】:

我一直在使用 InversifyJS 来处理我的打字稿服务器上的 DI。关键是我想根据环境在我的代码中注入不同的实现。

有一个常见的场景,我想在生产中使用 S3,但在我的笔记本电脑上开发时使用本地文件夹。由于我使用interface 进行此通信,因此可以选择使用两个不同的配置文件来包含容器信息,但是使用条件将容器加载到我的服务上是很脏的。

另一种选择是拥有一个配置文件,但根据环境配置一个实现或另一个实现。像这样的:

container.bind<IStorageRepository>(SERVICE_IDENTIFIER.STORAGE).to(
    (process.env.ENVIRONMENT === 'prod') ? S3StorageRepository : LocalFolderStorageRepository
);

但我一点也不喜欢这样,因为如果你有三个(或更多)不同的环境有不同的需求,那就有点疯狂了。

有什么想法吗?

【问题讨论】:

  • 在此期间...您找到解决方案了吗?
  • 不,我使用process.env.ENVIRONMENT 保留了实现,我没有找到更简洁的解决方案。

标签: javascript typescript dependency-injection inversifyjs


【解决方案1】:

在您的情况下,选择正确实现的过程从 .to() 移出。你可以在上面处理它。分配给一个链接并将其传递给那里。 在我的项目中针对此类情况。我将容器组装过程隐藏到构建器函数中。以命令式的方式,您可以处理所有事情。

【讨论】:

  • 你能举个例子吗?
猜你喜欢
  • 2015-03-20
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 2023-04-10
  • 1970-01-01
  • 2017-07-09
相关资源
最近更新 更多