InfersifyJS - 如何有条件地加载常量值
InfersifyJS - how to conditionally load constantValue
我在 typescript
+ NODE.js
应用程序中使用了 inversifyJS。我有不同的环境不同的配置:
配置制作
const CONFIG_PRODUCTION: Object = {
PATH_TO_STATIC_FILES: '../web/build',
SECURE_COOKIE: false
};
export default CONFIG_PRODUCTION;
配置开发
const CONFIG_DEVELOPMENT: Object = {
PATH_TO_STATIC_FILES: 'build/web/build',
SECURE_COOKIE: true
};
export default CONFIG_DEVELOPMENT;
现在,在我的推断容器配置中,我的设置如下所示:
反转配置
const dependencyContainer = new Container();
dependencyContainer.bind(TYPES.ENVIRONMENTAL_CONFIG).toDynamicValue(
(context: interfaces.Context) => context ? CONFIG_PRODUCTION : CONFIG_DEVELOPMENT);
...
export default dependencyContainer;
现在我在哪里可以决定如何加载所需的配置对象?在我的 class 中,我目前像这样注入 属性:
快递文件
constructor(
@inject(TYPES.ENVIRONMENTAL_CONFIG) private config: Object
) {
...
console.log(config) // prints development config
}
inversify 是否提供类似 setContext()
的功能?
我想到了将 属性 与依赖容器上的 toFactory
方法绑定的解决方案:
dependencyContainer.bind(TYPES.ENVIRONMENTAL_CONFIG).toFactory(
() => (context: interfaces.Context) => context ? CONFIG_PRODUCTION : CONFIG_DEVELOPMENT);
之后我将工厂作为函数注入到我使用的 class:
constructor(@inject(TYPES.ENVIRONMENTAL_CONFIG) private environmentFactory: Function) {
this.environmentalProps = this.environmentFactory(isProduction);
}
我在 typescript
+ NODE.js
应用程序中使用了 inversifyJS。我有不同的环境不同的配置:
配置制作
const CONFIG_PRODUCTION: Object = {
PATH_TO_STATIC_FILES: '../web/build',
SECURE_COOKIE: false
};
export default CONFIG_PRODUCTION;
配置开发
const CONFIG_DEVELOPMENT: Object = {
PATH_TO_STATIC_FILES: 'build/web/build',
SECURE_COOKIE: true
};
export default CONFIG_DEVELOPMENT;
现在,在我的推断容器配置中,我的设置如下所示:
反转配置
const dependencyContainer = new Container();
dependencyContainer.bind(TYPES.ENVIRONMENTAL_CONFIG).toDynamicValue(
(context: interfaces.Context) => context ? CONFIG_PRODUCTION : CONFIG_DEVELOPMENT);
...
export default dependencyContainer;
现在我在哪里可以决定如何加载所需的配置对象?在我的 class 中,我目前像这样注入 属性:
快递文件
constructor(
@inject(TYPES.ENVIRONMENTAL_CONFIG) private config: Object
) {
...
console.log(config) // prints development config
}
inversify 是否提供类似 setContext()
的功能?
我想到了将 属性 与依赖容器上的 toFactory
方法绑定的解决方案:
dependencyContainer.bind(TYPES.ENVIRONMENTAL_CONFIG).toFactory(
() => (context: interfaces.Context) => context ? CONFIG_PRODUCTION : CONFIG_DEVELOPMENT);
之后我将工厂作为函数注入到我使用的 class:
constructor(@inject(TYPES.ENVIRONMENTAL_CONFIG) private environmentFactory: Function) {
this.environmentalProps = this.environmentFactory(isProduction);
}