使用配置文件与AngularJS

3
我正在创建一个Angular应用程序,该应用程序与一个Node后端Express应用程序交互,并使用配置文件来设置我的Node应用程序中的环境变量。我可以像这样访问我的配置文件:

index.js

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

我的配置文件长这样:

My config file looks like this:

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)

我的问题是如何在Angular中访问app.config.js并在我的Angular服务中动态设置主机/端口。
2个回答

1

我想如果你坚持使用与Node服务器相同的配置文件,你将需要使.js文件可以通过GET请求从你的应用程序中获取,并将其解析为JSON字符串。

编辑: 你将需要有两个配置文件,一个供你的Node服务器使用,另一个供你的Angular应用程序使用。现在,如果你希望源代码是一个文件,你可以将它构建到你的构建过程中 - 如果你使用像gulp或grunt这样的工具,这将是相当容易的。它可以将单一的配置文件构建为两个文件 - Node服务器配置文件和Angular模块(我建议使用常量或值),你可以将其注入到你的数据服务中。


在不知道后端运行的端口号之前,你会如何进行GET请求? - user1952312
2
如果您不知道配置文件的内容就无法访问配置文件,那么似乎您遇到了问题。 - Neil S
前端是否没有一种类似于后端使用get require的等效方式,只需像在后端一样导入配置文件即可? - user1952312
一个简单的谷歌搜索让我相信它会:https://blog.codecentric.de/en/2014/08/angularjs-browserify/ - Neil S
我也发现了这个,不知道这是否是常见/最佳实践,但谢谢,我认为这将解决我的问题。 - user1952312

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
    });
});

问题中OP提供的配置文件不是有效的JSON格式。 - Neil S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接