Visual Studio - Javascript项目定义具有不同发布的全局变量

时间:2014-11-17 15:21:18

标签: angularjs web.config-transform

在项目中是否有一种方法,只使用JavaScript(AngularJs)和HTML来根据发布配置文件分配controller.js上使用的全局变量?

例如,在C#项目中,我可以在Web上定义一个值.Config-> AppSettings,并根据我发布的版本(开发,质量,生产)使用Web.Config.Transform更改值

由于我无法访问Javascript项目的web.config文件,无论如何我还能做到这一点吗?我需要更改的值是API的URL,这对于任何环境(开发,质量,生产)都是不同的。

目前它的硬编码,如下:

   controllers.js

//var baseUrl = "http://something.azurewebsites.net/"; //Quality
var baseUrl = "http://localhost:1050/"; //Development

myApp.controller('loginController',.......

然后在每个控制器上使用baseUrl来访问API

1 个答案:

答案 0 :(得分:1)

因此,经过多次搜索并意识到我无法访问Web.config文件后,我想出了这个解决方案:

var baseUrl = checkBaseUrl(window.location.host);

function checkBaseUrl(host)
{
  // in production
  if (host.indexOf("www.domain.com") > -1)
     return "https://www.domain.com/";

  // in localhost
  if (host.indexOf("localhost") > -1)
    return "http://localhost:1134/";

  // in develop
  if (host.indexOf("-dev") > -1)
    return "https://name-dev.domain.com/";

  // in tests
  if (host.indexOf("-test") > -1)
    return "https://name-test.domain.com/";

  // in staging
  return "https://name-staging.domain.com/"
}

这就是诀窍