有没有人使用JavaScript的configuration文件?

我们有一些特定于环境的javascript文件,所以我正在考虑创build一种通用的方式来读取XML(config)文件来存储不同的环境特定设置。 我很想知道这里有没有人这样做(或者,如果没有,你有没有这个原因)?

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) 

所有你需要做的是加载一个JavaScript文件的一些variables定义,理想的命名空间。 你可以使用一个单一的对象文字:

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

然后加载该文件作为你的第一个脚本,你将有权访问每个后续脚本configuration信息,例如

 if (config.option1 == 'good') doStuff(); 

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

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

所以你可以用特定的设置创build一个名为app-config.js的文件:

 var SiteName = "MyWebsite.com"; var HeaderImage = "http://mycdn.comhttp://img.dovov.commywebsite/header.png"; 

然后你在你的页面上包含这样的js:

 <script type="text/javascript" src="/js/app-config.js"></script> <script type="text/javascript" src="/js/app.js"></script> 

你可能会考虑的一件事是让页面本身包含一些Javascript块来提供这种configuration信息。 通常情况下,你真的只需要less量的信息来build立URL等。我将给出一个JSP的例子:

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

那么你的“纯”Javascript代码可以看window.appConfig获取关键信息。 如果你需要很多东西的话,这显然会变得很糟糕。

当您的页面通过服务器端环境中的某些模板系统构build时,这非常简单。 这样,你只需要在一个地方(或less量的地方,换言之,模板)设置脚本标签,所有的页面自动获取。

编辑以消除奇怪的variables声明

你可以很容易地使用像jquery( http://think2loud.com/reading-xml-with-jquery/)的东西拉下XML文件。;

但是,我想提出一个环境特定的客户端JavaScript代码是否真的是一个好主意。 似乎应该在服务器上处理任何特定环境(即qa,uat,我假设的生产),并且客户端应该是环境不可知的

我build议使用YCB。 这里是一个如何使用它的例子: https : //github.com/yahoo/ycb/blob/master/examples/simple/app.js