我们有特定于环境的javascript文件,因此我考虑沿着创建通用方式读取XML(配置)文件以存储不同环境特定设置的路径。我很想知道这里有没有人这样做(或者如果没有,是否有理由不这样做?)
答案 0 :(得分:30)
您需要做的就是加载一个带有一些变量定义的javascript文件,理想情况下是命名空间。您可以使用单个对象文字:
var config = {
option1: 'good;',
option2: {name: 'bad'},
option3: ['u','g','l','y']
}
然后将该文件作为第一个脚本加载,您将可以访问每个后续脚本中的配置信息,例如
if (config.option1 == 'good') doStuff();
答案 1 :(得分:25)
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)
答案 2 :(得分:8)
为什么不使用单独的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>
答案 3 :(得分:5)
您可能会考虑的一件事是让页面本身包含很少的Javascript块来提供这种配置信息。通常,您只需要少量的信息来构建URL等。我将给出一个JSP示例:
<script>
var appConfig = {
'syndicate': '${environ.syndicate}',
'urlBase': '${environ.urlBase}'
};
</script>
然后,您的“纯”Javascript代码可以查看window.appConfig
以获取重要信息。显然,如果你需要很多东西,这将变得一团糟。
当您的页面通过服务器端环境中的某个模板系统构建时,这一点尤为简单。这样,您只需将脚本标记设置在一个地方(或少数地方;换句话说,模板),所有页面都会自动获取。
(编辑以消除奇怪的变量声明)
答案 4 :(得分:0)
您可以使用jquery(http://think2loud.com/reading-xml-with-jquery/)。
之类的内容轻松下载XML文件但是,我想说明环境特定的客户端javascript代码是否真的是一个好主意。似乎应该在服务器上处理任何特定环境(即qa,uat,我假设的生产),客户端应该与环境无关
答案 5 :(得分:0)
我建议使用YCB。以下是如何使用它的示例:https://github.com/yahoo/ycb/blob/master/examples/simple/app.js