【问题标题】:How to call node server to fetch data in web application using Facebook Flux?如何使用 Facebook Flux 调用节点服务器以获取 Web 应用程序中的数据?
【发布时间】:2015-04-06 18:08:37
【问题描述】:

我是新来的反应和通量。我正在尝试使用通量体系结构构建一个简单的应用程序,但我陷入了如何从节点服务器获取数据的问题。我已经搜索了这个以及我找到的每个链接,只是表明我必须使用 ajax 从服务器获取数据,但我不想这样做。

由于我当前的应用程序是基于 Angular 和节点 js 构建的,因此我可以轻松地调用服务器以通过 $http 服务获取数据。但是我在 react 或者 Flux 中没有找到那种东西,即使 react 文档中没有路由的概念,我们需要使用第三方组件进行路由。

所以我的问题是有什么方法可以让我在不使用 ajax 的情况下从服务器获取数据,并且路由不必使用第三方组件。请帮我弄清楚。这是我找到的一些链接:

http://facebook.github.io/react/tips/initial-ajax.html

http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/

http://madebymany.com/blog/beyond-the-to-do-app-writing-complex-applications-using-flux-react-js

【问题讨论】:

    标签: reactjs reactjs-flux


    【解决方案1】:

    React 将自己称为 MVC 中的视图,并由您来处理模型和控制器。这个想法是它足够开放,可以使用任何你想要的 ajax 和路由库。就路由而言,React Router 通常是我见过的首选解决方案。对于 ajax/数据获取,Facebook 正在努力开源他们的解决方案 Relay,但目前,您可以使用 jQuery、vanilla js 或任何获取数据的第三方 javascript 插件。

    React 并不是要取代 Ember/Angular/WhateverJS,至少不是完全取代。它只负责您的应用程序的视图部分。它的唯一目的是绘制您的视图,然后在您更改数据时智能地重新绘制它们。这意味着您必须处理路由和数据获取。此外,Flux 只是一种设计模式,它不是您需要和使用的库。

    【讨论】:

    • 是的,我读过继电器,但它处于初始状态,他们仍在努力。但是我的问题仍然与我必须使用任何第三方 api 来获取数据一样,那么我为什么要使用 react 或flux。
    • @Toretto 我更新了我的答案以试图澄清
    【解决方案2】:

    Superagent 是 ajax 的一个不错的替代品。这与在 Angular 中使用 $http 并没有什么不同。

    var request = require('superagent');
    
    request
      .post('/api/pet')
      .send({ name: 'Manny', species: 'cat' })
      .set('X-API-Key', 'foobar')
      .set('Accept', 'application/json')
      .end(function(error, res){
    
      });
    

    创建一个将所有这些都收集在一个地方的模块是个好主意,您可以在需要进行实际 API 调用的任何地方require

    至于路由,如果你不想使用像 ReactRouter 这样的第三方库,我认为应该可以使用带有window.location 的 switch/case 语句来滚动你自己的,并且只根据当前渲染不同的组件网址。您还必须在服务器上设置有效路由以指向您的应用的同一个入口点,或者使用包罗万象的路由。

    看起来 React/Flux 似乎是“不完整的”,因为它们缺乏完成这些事情的内置方法,但它们在解决它们设计的特定问题方面做得很好。这是使用它们的一个很好的理由,即使这意味着将它们与其他工具结合以获得您想要的功能。

    【讨论】:

      【解决方案3】:

      通量是一个架构概念。特定的实现可能包括用于从服务器获取数据的帮助程序,但通常不会,因为这不是 Flux 解决的问题,并且您的应用与服务器通信的方式可能会因特定目标而异。

      您可以使用任何您喜欢的方式(和库)获取数据,但没有内置解决方案。

      谈论路由器。同样,这不是 Flux 解决的问题。有些应用需要路由,有些则不需要。没有理由将它包含在某些实现中。

      没有内置的解决方案。 React 使用最广泛的路由库是: https://github.com/rackt/react-router

      我强烈建议从基础开始,彻底通读概述: http://facebook.github.io/flux/docs/overview.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        • 2015-04-07
        • 2012-11-16
        相关资源
        最近更新 更多