6
A
回答
2
你的問題可以針對任何JavaScript應用,而不僅僅是一個骨幹應用程序,所以下面的答案是比較一般:
我要做的就是有一個config.js文件是在你的HTML中加載的第一件事。內容僅僅是一個帶有配置的JSON對象:
var CONFIG = {
debug : false,
server : 'http://production.foo.com'
};
現在應用程序的每個組件都可以訪問配置,因爲CONFIG是一個全局對象。所以你可以在你的應用程序的任何地方寫這個:
if (CONFIG.debug) {
console.log('my debug stuff...');
}
訣竅是有2個config.js文件。一個用於開發,一個用於生產。當你想發佈你的應用程序時,將你的生產config.js文件打包並上傳到你的服務器。
您可以創建一個構建腳本來構建您的生產應用程序。作爲第一步,它可以將正確的config.js文件複製到正確的位置。您還可以添加步驟來縮小您的js文件,將它們捆綁到一個文件等中。
11
我建議你有一個文件中這樣的方式:
var YourProject = {};
YourProject.Config = {
Local : {
db : 'mysql:dumy:[email protected]',
relativeUrl : 'blabla',
otherConfig : '123456'
},
Dev : {
db : 'mysql:dumy:[email protected]',
relativeUrl : 'blabla',
otherConfig : '123456'
},
Production : {
db : 'mysql:dumy:[email protected]',
relativeUrl : 'blabla',
otherConfig : '123456'
}
}
然後在你的事業有這樣的事情:
YourProject.ConfigHandler = {
getValue : function(key){
var env;
switch(window.location.hostname){
case "localhost":
case "127.0.0.1":
env = 'Local';
break;
case "dev.yourdomain.com":
env = 'Dev';
break;
case "yourdomain.com":
env = 'Production';
break;
default:
throw('Unknown environment: ' + window.location.hostname);
}
return YourProject.Config[env][key];
}
};
所以,你將有隻有一個文件,呼叫型動物API DB網址,你將需要調用只有一行:
YourProject.ConfigHandler.getValue('db');
1
我適應丹尼爾的NIC Ë答案的CoffeeScript/CommonJS的,所以在我config.coffee
我:
env = switch window.location.hostname
when "localhost", "127.0.0.1"
"development"
when "www.example.com", "example.com"
"production"
config =
development:
urlRoot: "http://localhost:3000"
production:
urlRoot: "http://www.example.com"
module.exports = config[env]
然後客戶端代碼如下所示:
config = require("config")
config.urlRoot
謝謝您的幫助。理想情況下,我希望在git或任何版本控制系統中擁有整個應用程序,並且在沒有任何人工操作的情況下執行更新。如果錯誤地下載了生產配置文件,實時數據可能會受到影響,我們的客戶會非常不高興。 – user1521903 2012-07-12 21:39:48