【问题标题】:Local settings in javascript projectjavascript项目中的本地设置
【发布时间】:2012-03-23 06:39:09
【问题描述】:

我正在使用使用大量全局设置的主干开发一个开源 javascript 项目。对于本地开发,我们希望每个开发人员都能够设置自己的设置,但我们希望它存在于单独的文件中,以便我们可以使用 .gitignore 将其从存储库中排除。

我来自 Django 背景,约定是有一个 settings.py 和 local_settings.py ,其中 settings.py 只是做一些类似的事情:

try:
    from local_settings import *
except:
    pass

本地设置是否有等效的 javascript 约定?

【问题讨论】:

    标签: javascript django backbone.js settings conventions


    【解决方案1】:

    是的,只需创建一个包含所有设置的全局对象(如果您有的话,也可以是您的命名空间的本地对象):

    var settings = {
        ...
    };
    

    由于全局变量在 JavaScript 中确实是全局变量,而不是像 python 中那样特定于模块,因此无需导入任何内容。

    如果你想扩展/覆盖你的设置对象,你可以例如使用 jQuery 的$.extend() 方法:

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

    【讨论】:

    • 那么 localSettings 对象应该存在于它自己的 javascript 文件中吗?如果是这样,如果用户没有创建 localSettings.js,你如何确保它被加载到全局命名空间中而不会导致错误?
    • 在哪个文件中都没有关系。如果它可能未定义:typeof localSettings == 'undefined' ? {} : localSettings
    【解决方案2】:

    我不确定您希望将哪种设置导出到 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获取这些设置

    【讨论】:

    • 对不起,我可能不清楚这纯粹是一个 javascript 项目,而且我恰好来自 Django 背景。不过,如果我确实需要与 Django 项目集成并执行类似的操作,感谢您提出的有趣想法。
    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多