使用带有angularjs的配置文件

时间:2015-09-14 22:13:29

标签: javascript angularjs node.js

我正在创建一个与节点后端表达应用程序对话的角度应用程序,并使用配置文件在我的节点应用程序中设置env变量我可以像这样访问我的配置文件:

index.js

  var port = config.get("server:port");
  var server = app.listen(port, function() {});

我的配置文件如下所示:

app.config.js

    module.exports =
    {
"server":{
    "host":"localhost",
    "port":3000
  },
      "mongodb": "",

      "redis": {
        "loadBalancerInstance": {
          "host": "server",
          "port": {
            "default": "6379"
          }
        }
      },
      "elastic": {
        "server": "server",
        "port": "9200",
        "user":"foo",
        "password":"bar"
      },
      "log": {
        "level": "info",
        "filename": "",
        "console": true,
        "logio": {
          "port": "28777",
          "node_name": "this-server-name",
          "host": "server"
        }
      }
    };

我已经静态地定义了到后端的路由/端口

datafactory.js

angular.module('dashboard.factories')
  .factory('DataFactory', function($http, $q, FormatFactory) {
    var backend = function(apiEndPoint, clientKey) {
      clientKey = clientKey || "";
      var deferred = $q.defer();
      $http.get("http://localhost:3000/<-(pull this from config file)" + apiEndPoint + "/" + clientKey)

我的问题是如何在角度服务中访问app.config.js并在我的角度服务中动态设置主机/端口

2 个答案:

答案 0 :(得分:1)

我想如果您仍然坚持使用节点服务器使用的相同配置文件,那么您必须将.js文件提供给您的应用程序的GET请求,您可以使用该文件。然后必须将字符串解析为JSON。

编辑: 您将不得不拥有两个配置文件,一个可用于您的节点服务器,另一个适用于您的角度应用程序。现在,如果您希望源是一个文件,您可以将其构建到您的构建过程中 - 如果您使用gulp或grunt之类的东西,这将相当容易。它可以采用单个配置文件并构建两个文件 - 节点服务器配置文件,以及可以注入数据服务的角度模块(我建议使用常量或值)。

答案 1 :(得分:0)

如果您在localhost:3000/config处提供配置文件,则可以执行以下操作:

angular.module('dashboard.factories')
.factory('DataFactory', function($http, $q, FormatFactory) {
    $http.get('localhost:3000/config')
    .success(function(config) {
        $http.get(config.server.host + ":" + config.server.port)
        // whatever you want here
    });
});