如何设置Angular config var来设置服务器地址?

时间:2015-11-07 19:43:19

标签: javascript angularjs node.js

如何在AngularJS上存储字符串的集中式解决方案?我问了一个类似的question regarding NodeJS,但我不知道如何使用与我以前使用Node相同的Angular方法。

我想到了两种方法:

1 - 设置角度常数

app.constant('config',
  {
    serverUrl: 'http://localhost:8080'
  });

这是我的实际解决方案,但每次我将代码发送到云时,我都需要使用服务器地址更新代码。

2 - 使用类似Node's process.env

的内容

我不知道怎么做。

3 - 使用诸如require之类的内容('./ config.js')

我在想类似Node的方法。不知道怎么做。

嗯,有没有一种有效的方法来实现这一目标?

2 个答案:

答案 0 :(得分:2)

我认为没有一个正确的答案。我更喜欢你的第一种方法:

app.constant('config',
  {
    serverUrl: 'http://localhost:8080'
  });

这是因为我认为node.js后端和角度前端是separete应用程序。例如,我可以添加到node.js第二版api并将其他角度应用程序(或其他技术中的事件)连接到新的api,但也使用旧的角度应用程序与之前的api版本。 总之,我认为它更灵活

编辑:

  

所以,每次上传我的Git

时,我都需要更新这一行

我没有将配置文件添加到存储库。我创建了我们添加到存储库的示例配置文件。但实际的配置被忽略了。

EDIT2:

在我的一个项目中,我们使用此模块https://www.npmjs.com/package/gulp-ng-constant来构建来自config.json的app.constant

答案 1 :(得分:1)

这就是我们如何切换服务器URL而不是每次都重写它

  var hostname = window.location.hostname;
  if (hostname.indexOf("our.live.url") > -1) {
    usedEnvironment = availableEnvironments.LIVE;
  }  else if (hostname.indexOf("localhost") > -1) {
    usedEnvironment = availableEnvironments.LOCAL;
  } else {
    usedEnvironment = availableEnvironments.TEST;
  }

  switch (usedEnvironment) {
    case availableEnvironments.LIVE:
      angular.module('app')
        .value('apiHost', 'https://our.live.backend.com');
      angular.module('app')
        .value('IntercomConfig', {
          Enabled: true,
          AppId: ''
        });
      break;

    case availableEnvironments.TEST:
      angular.module('app')
        .value('apiHost', 'our.test.backend');
      angular.module('app')
        .value('IntercomConfig', {
          Enabled: false,
        });
      break;

    default:
      angular.module('app')
        .value('apiHost', 'http://localhost:8080');
      angular.module('app')
        .value('IntercomConfig', {
          Enabled: false,
        });
  }