【问题标题】:Send data to a front-end application via node?通过节点将数据发送到前端应用程序?
【发布时间】:2014-12-02 04:17:44
【问题描述】:

我有一个节点应用程序,它在 /public 中托管一个独立的前端应用程序和一个休息 api。前端应用程序仅通过 REST 与后端通信,但现在我需要发送一些有关初始应用程序负载的基本配置信息。

我不想在页面加载时发出 ajax 请求,而是在请求 /index.html 时发送所需的配置信息,因为这是运行应用程序所必需的。

设置一些基本配置的最简单方法是什么?

有没有办法可以通过节点提供一些脚本,然后从服务器对其进行参数化?

类似的东西 /scripts/config.js

angular.constant('value1', '#{some parameterized server value}'); 

我正在使用快递。

【问题讨论】:

    标签: angularjs node.js express


    【解决方案1】:

    您可以只添加一个提供配置的路由。 类似的东西。

    app.get('/scripts/config.js', function(req, res) {
      var content = 'angular.module(\'config\', [])\n';
      content += '  .constant(\'value1\', ' + someValue + ')';
      res.set('Content-Type', 'text/javascript');
      return res.send(content);
    }
    

    【讨论】:

      【解决方案2】:

      不发出 Ajax 请求的唯一方法是在 index.html 中包含一个 config.json 文件。您可以让节点读取/写入您的配置属性到该文件。

      Angular中的执行顺序是:

      1. app.config()
      2. app.run()
      3. 为指令编译函数
      4. app.controller
      5. 指令链接

      您可以将启动逻辑放在app.config()app.run()

      我相信,最好的做法是在一个模块中分离您的配置逻辑并使用 $http 动态获取属性。

      【讨论】:

      • 只是一般性评论.. 除非最近发生了变化,否则您不能在 app.config 中使用 $http.. 所以很遗憾,您不能使用它来引导应用程序。即使可以,该应用程序也不会在进入运行阶段之前等待承诺。如果我在这方面错了(我很想这样做),请告诉我。
      • 你没有错,事实上你是绝对正确的。这就是为什么我从不建议在 config()run() 中使用 $http 而是在单独的模块中使用。
      • 对对对。男人,多么沮丧。这个小功能可以产生很大的不同.. sigh
      猜你喜欢
      • 2018-12-22
      • 2020-07-06
      • 1970-01-01
      • 2018-08-01
      • 2018-08-06
      • 2014-04-02
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      相关资源
      最近更新 更多