Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于环境向Javascript注入变量?_Javascript_Jquery_Ajax_Continuous Integration - Fatal编程技术网

如何基于环境向Javascript注入变量?

如何基于环境向Javascript注入变量?,javascript,jquery,ajax,continuous-integration,Javascript,Jquery,Ajax,Continuous Integration,我正在构建一个javascript应用程序,基本上我有三个不同的环境。本地、CI和QA环境。我的后端服务总是单独部署到我的前端应用程序。因此,大多数Ajax调用都是CORS。我们已经解决了这个问题。然而,在我的代码中有这样的东西 jQuery.ajax({"url":"http://www.somecompany.com/api"}); 因此,问题将出现在CI和QA环境中,ajax调用将影响甚至影响这些环境。如何根据正在运行的环境注入这些变量。如果是Java或.NET,我可以使用YAML,一切

我正在构建一个javascript应用程序,基本上我有三个不同的环境。本地、CI和QA环境。我的后端服务总是单独部署到我的前端应用程序。因此,大多数Ajax调用都是CORS。我们已经解决了这个问题。然而,在我的代码中有这样的东西

jQuery.ajax({"url":"http://www.somecompany.com/api"});
因此,问题将出现在CI和QA环境中,ajax调用将影响甚至影响这些环境。如何根据正在运行的环境注入这些变量。如果是Java或.NET,我可以使用YAML,一切都可以。但是,作为Javascript,它是客户端的,我们如何根据环境选择要点击的url,而不需要在代码中查找和替换,也不需要任何黑客手段。人们通常如何克服这种问题


请注意,我正在使用Knockout.js,这可能不是最好的方法。但这是可行的

您可以使用服务器端代码本身将值设置为javascript变量

$(document).ready(function(){
   var myURL = "<%=urlFromServer%>"; //Assuming you are using JSP <%= ..%>
});
$(文档).ready(函数(){
var myURL=”“;//假设您正在使用JSP
});

此全局变量保存该值。您可以在任何需要的地方重复使用此变量。

如果您使用grunt构建应用程序,请使用。将配置放入
resources/config.json

{
  "test": {
    "apiUrl": "http://test.somecompany.com/api"
  },
  "prod": {
    "apiUrl": "http://www.somecompany.com/api"
  }
}
配置变量化任务:

grunt.initConfig({
  /* ... */
  variablize: {
    target: {
      input: "resources/Config.json",
      output: "dist/Config.js",
      variable: "Config",
      property: grunt.option('profile')
    }
  }
});
运行
grunt--profile=test
,并按如下方式使用它:

$(document).ready(function(){
  var myURL = Config.apiUrl;
});