有没有人使用配置文件的JavaScript?

Jus*_*son 42 javascript xml configuration

我们有特定于环境的javascript文件,因此我想要创建一种通用的方式来读取XML(配置)文件来存储不同的环境特定设置.我很想知道这里是否有其他人这样做(或者如果没有,是否有理由不这样做)?

Jam*_*ate 29

您需要做的就是加载一个带有一些变量定义的javascript文件,理想情况下是命名空间.您可以使用单个对象文字:

var config = {
  option1: 'good;', 
  option2: {name: 'bad'}, 
  option3: ['u','g','l','y']
}
Run Code Online (Sandbox Code Playgroud)

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

if (config.option1 == 'good') doStuff();
Run Code Online (Sandbox Code Playgroud)

  • 使用函数或其他变量为变量添加前缀以赋予其更多含义/上下文,例如config.option1而不仅仅是option1 (4认同)

Dio*_*ane 26

使用JSON比使用XML快几百倍,自带一个原生JavaScript对象.附上并忘记.

编辑:

James Westgate的例子是JSON.您可以使用此内联或外部文件,甚至可以通过AJAX加载.

这是另一个例子:

var clientData = {}
clientData.dataset1 = [
    {name:'Dave', age:'41', userid:2345},
    {name:'Vera', age:'32', userid:9856}
]

alert(clientData.dataset1[0].name)
Run Code Online (Sandbox Code Playgroud)

  • 这不是有效的JSON. (10认同)

Ste*_*ham 9

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

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

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

var SiteName = "MyWebsite.com";
var HeaderImage = "http://mycdn.com/images/mywebsite/header.png";
Run Code Online (Sandbox Code Playgroud)

然后你在你的页面上包含js,如下所示:

<script type="text/javascript" src="/js/app-config.js"></script>
<script type="text/javascript" src="/js/app.js"></script>
Run Code Online (Sandbox Code Playgroud)


Poi*_*nty 5

您可能会考虑的一件事是让页面本身包含很少的Javascript块来提供这种配置信息.通常,您只需要少量的信息来构建URL等.我将给出一个JSP示例:

<script>
  var appConfig = {
    'syndicate': '${environ.syndicate}',
    'urlBase': '${environ.urlBase}'
  };
</script>
Run Code Online (Sandbox Code Playgroud)

然后,您的"纯"Javascript代码可以查找window.appConfig获取关键信息.显然,如果你需要很多东西,这将变得一团糟.

当您的页面通过服务器端环境中的某个模板系统构建时,这一点尤为简单.这样,您只需将脚本标记设置在一个地方(或少数地方;换句话说,模板),所有页面都会自动获取.

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