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
相關問題
- 1. 創建骨幹應用程序
- 2. 我們可以在Java中讀取OS環境變量嗎?
- 3. 如何爲我的程序創建環境變量
- 4. .env文件可以創建環境變量嗎?
- 5. 當應用程序變爲背景時,我們可以停止for循環嗎
- 6. 通過Winform應用程序創建環境變量,非常慢
- 7. 我們可以使用扭曲的python創建應用程序作爲django ...嗎?
- 8. 我們可以使用SWIG爲Qt應用程序創建python綁定嗎?
- 9. 我們可以使用html和javascript爲獨立應用程序創建GUI嗎?
- 10. nginx.conf可以訪問環境變量嗎?
- 11. catalina.bat可以更改環境變量嗎?
- 12. 預定義的環境變量可以引用動態創建的環境變量嗎?
- 13. 我可以只爲複合命令定義環境變量嗎?
- 14. 我可以爲Java Native Interface(JNI)庫設置環境變量嗎?
- 15. 我們可以爲特定應用程序創建虛擬鍵盤嗎?
- 16. 我們可以在多線程環境中使用Hashmap嗎?
- 17. 我可以爲Metro應用程序創建一個MFC DLL嗎?
- 18. 我們可以將處理作爲數學建模和編程的環境嗎?
- 19. 我可以在Windows中使用快捷方式爲應用程序設置環境變量嗎?
- 20. 在C程序中,我們可以使變量的名稱成爲變量嗎?
- 21. 我們可以用selenium webdriver建立一個應用程序嗎?
- 22. 如何構建骨幹應用程序?
- 23. 我可以在Podfile中使用Travis環境變量嗎?
- 24. 我可以使用環境變量%PROGRAMDATA%嗎?
- 25. 我們可以將Perl腳本中使用的變量設置爲環境變量嗎?
- 26. 如何爲tomcat創建環境變量?
- 27. 骨幹可以創建對象,但不能獲取它們
- 28. 可以在linux中爲用戶設置環境變量嗎?
- 29. 在Spring應用程序環境中讀取環境變量
- 30. 我們可以在flashdevelop中使用Haxe創建Air Mobile應用程序嗎?
謝謝您的幫助。理想情況下,我希望在git或任何版本控制系統中擁有整個應用程序,並且在沒有任何人工操作的情況下執行更新。如果錯誤地下載了生產配置文件,實時數據可能會受到影響,我們的客戶會非常不高興。 – user1521903 2012-07-12 21:39:48