代码之家  ›  专栏  ›  技术社区  ›  Justin Helgerson

有人使用javascript的配置文件吗?

  •  41
  • Justin Helgerson  · 技术社区  · 16 年前

    我们有一些特定于环境的javascript文件,所以我考虑创建一种通用的方法来读取XML(config)文件以存储不同的特定于环境的设置。我很想知道这里有没有其他人这样做(如果没有,有没有理由不这么做)?

    6 回复  |  直到 11 年前
        1
  •  25
  •   Diodeus - James MacFarlane    16 年前

    JSON的使用速度比XML快数百倍,它自带了一个本机的JavaScript对象。依恋与遗忘。

    编辑:

    詹姆斯韦斯特盖特的例子是JSON。您可以使用这个内联文件或作为外部文件,甚至可以通过Ajax加载。

    下面是另一个例子:

    var clientData = {}
    clientData.dataset1 = [
        {name:'Dave', age:'41', userid:2345},
        {name:'Vera', age:'32', userid:9856}
    ]
    
    alert(clientData.dataset1[0].name)
    
        2
  •  30
  •   James Westgate    16 年前

    您所需要做的就是加载一个带有一些变量定义的javascript文件,最好是有名称空间的。您可以为此使用单个对象文本:

    var config = {
      option1: 'good;', 
      option2: {name: 'bad'}, 
      option3: ['u','g','l','y']
    }
    

    然后将该文件作为第一个脚本加载,您将可以访问每个后续脚本中的配置信息,例如

    if (config.option1 == 'good') doStuff();
    
        3
  •  8
  •   Steve Wortham    16 年前

    为什么不使用单独的JS文件来存储特定于环境的设置?

    就像可以使用多个CSS文件来设置页面样式一样,也可以使用多个JS文件。

    因此,您可以使用特定设置创建一个名为app-config.js的文件:

    var SiteName = "MyWebsite.com";
    var HeaderImage = "http://mycdn.com/images/mywebsite/header.png";
    

    然后在页面上包含JS,如下所示:

    <script type="text/javascript" src="/js/app-config.js"></script>
    <script type="text/javascript" src="/js/app.js"></script>
    
        4
  •  5
  •   Pointy    16 年前

    您可能会考虑让页面本身包含一些小的javascript块,以便仅提供此类配置信息。通常,您只需要少量信息来构建URL等。我将给出一个JSP示例:

    <script>
      var appConfig = {
        'syndicate': '${environ.syndicate}',
        'urlBase': '${environ.urlBase}'
      };
    </script>
    

    然后你的“纯”javascript代码就可以 window.appConfig 获取关键信息。很明显,如果你需要很多东西,这会变得一团糟。

    当您的页面是通过服务器端环境中的某个模板系统构建的时,这特别容易。这样,您只需要在一个地方设置脚本标记(或者在一小部分地方设置,换句话说就是模板),所有页面都会自动获得它。

    ( 编辑以消除奇怪的变量声明 )

        5
  •  0
  •   Joel Martinez    16 年前

    您可以使用jquery之类的工具轻松地下拉XML文件( http://think2loud.com/reading-xml-with-jquery/) .

    不过,我想说明一下特定于环境的客户端JavaScript代码是否真的是一个好主意。似乎任何特定于环境的(如QA、UAT、Production)都应该在服务器上处理,而客户机应该是环境不可知论者

        6
  •  0
  •   Tufan    11 年前

    我建议使用YCB。下面是一个如何使用它的示例: https://github.com/yahoo/ycb/blob/master/examples/simple/app.js