根据环境处理InversifyJS配置

时间:2018-06-01 08:52:29

标签: javascript typescript dependency-injection inversifyjs

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

在我的笔记本电脑上进行开发时,我想在生产中使用S3而在本地文件夹中使用S3。由于我使用interface进行此通信,因此可以选择使用容器信息两个不同的配置文件,但是使用条件加载我的服务上的容器非常脏。 / p>

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

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

但我根本不喜欢这样,因为如果你有三个(或更多)不同需求的不同环境,那么它会变得有点疯狂。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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