在项目中是否有一种方法,只使用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
答案 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/"
}
这就是诀窍