2012-03-05 49 views
2

我正在使用使用一堆全局設置的骨幹的開源javascript項目。對於本地開發,我們希望每個開發人員都能夠設置自己的設置,但我們希望這個設置存在於一個單獨的文件中,因此我們可以使用.gitignore將其從存儲庫中排除。javascript項目中的本地設置

我來自一個Django的背景和習慣是有一個settings.py和local_settings.py其中settings.py根本是這樣的:

try: 
    from local_settings import * 
except: 
    pass 

是否有本地設置等效JavaScript的約定?

回答

4

是,只需創建一個全局對象(或本地到您的命名空間,如果你有一個),包含所有的設置:

var settings = { 
    ... 
}; 

由於全局是真正全球性的JavaScript和不模塊特定像蟒蛇有無需導入任何東西。

如果你想擴展/覆蓋你的設置對象,你可以例如使用jQuery的$.extend()方法:

var currentSettings = $.extend(true, {}, settings, localSettings); 
+0

來獲得這些設置那麼localSettings對象應該存在於它自己的javascript文件中嗎?如果是這樣,如果用戶沒有創建localSettings.js,你如何確保它被加載到全局名稱空間而不會導致錯誤? – Spike 2012-03-05 20:19:25

+2

它在哪個文件中無關緊要。如果它可能是未定義的:'typeof localSettings =='undefined'? {}:localSettings' – ThiefMaster 2012-03-05 20:38:25

+0

哎呀,謝謝! – Spike 2012-03-05 23:23:25

0

我不知道你想出口到JS,爲什麼什麼樣的設置。在任何情況下,如果你想這樣做,我想最簡單的方法是在django中將json視圖提供給你的javascript。這樣至少你可以有一個的地方來存儲設置。

我沒有Django的開發,但我猜是這樣

from json import dumps 
from django.http import HttpResponse 

... 

def json_settings(request): 
    json = dumps(local_settings) 
    return HttpResponse(json, mimetype='application/json') 

會做這項工作。然後你可以通過調用$.getJSON

+0

對不起,我可能不清楚這是純粹的JavaScript項目,而我恰好來自Django背景。儘管如此,感謝這個有趣的想法,如果我確實需要與Django項目集成並做類似的事情。 – Spike 2012-03-05 23:25:58

+0

啊對,沒問題! – ggozad 2012-03-06 05:59:14