0

在仅使用 JavaScript (AngularJs) 和 HTML 的项目中,有没有办法根据发布配置文件分配在 controllers.js 上使用的全局变量?

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

由于我无法访问 Javascript 项目的 web.config 文件,我是否有办法完成此操作?我需要更改的值是 API 的 url,这对于任何环境(开发、质量、生产)都是不同的。

目前它是硬编码的,如下所示:

   控制器.js

//var baseUrl = "http://something.azurewebsites.net/"; //质量
var baseUrl = "http://localhost:1050/"; //发展

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

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

4

1 回答 1

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/"
}

这就是诀窍

于 2015-01-19T15:31:41.037 回答