0

源代碼傳遞配置到CommonJS的模塊

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

問題

我有一個建築用JavaScript。我寫了一個CommonJS模塊,但它與一個內部配置對象緊密耦合(請參閱var config)。 我想抽象這個配置,以便該模塊可以在其他環境/項目中重複使用。

背景

該模塊用於API的通信,即目前只是用戶認證。它是基於令牌的,爲此我將跟蹤令牌過期,允許所有狀態爲客戶端。 EventEmitter和AppDispatcher的原因是因爲它基於Facebook的「流量」架構。

-

任何方向都是很棒的。我已經考慮過依賴注入,但我不太明白這將如何應用?

+0

您能澄清一下_abstract this configuration_是什麼意思嗎?你想讓這個對象位於一個接口後面並且配置值存儲在別的地方嗎?如果是,在哪裏? – Djizeus

+0

我很樂意看到配置對象的實現。重要的是,APIService需要從任意項目位置被要求,堅持配置。 – joecritch

+1

'var config = require('config')'? – David

回答

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') 
+0

謝謝simenbrekken。所以你會直接從潛在的外部模塊(我的'APIService')需要'config'模塊?我覺得這意味着應用程序的結構會很有見地,並且可能會限制其他的實現,但對於我目前的情況來說,它的效果很好。 – joecritch