将配置传递给CommonJS模块

时间:2014-04-22 12:35:45

标签: javascript design-patterns architecture dependency-injection reactjs

源代码

https://gist.github.com/joecritch/3ef1a1ffc8c281eb74be

问题

我有一个JavaScript架构。我编写了一个CommonJS模块,但它与内部配置对象紧密耦合(参见var config)。 我想抽象这个配置,以便模块可以在其他环境/项目中重复使用

背景

该模块用于API通信,即目前只是用户身份验证。它是基于令牌的,我会跟踪令牌到期,允许所有状态都是客户端。 EventEmitter和AppDispatcher的原因是因为它基于Facebook的“flux”架构。

-

任何关于此的指示都会很棒。我考虑过依赖注入,但我不太明白这是如何应用的?

1 个答案:

答案 0 :(得分:1)

有很多库可以管理配置,但我更喜欢保持简单:

<强>配置/ index.js

var config = {
  facebook: {
    key: 'foo',
    secret: 'bar'
  }
}

try {
    require('./' + (process.env.NODE_ENV || 'development'))(config)
} catch (e) {
}

module.exports = config

<强>配置/ production.js

var configure = function(config) {
  config.facebook.secret = 'super secret'
}

module.exports = configure

<强> app.js

var config = require('./config')