2015-02-06 50 views
1

我是新來的反應和流量。我正在嘗試使用flux體系結構構建一個簡單的應用程序,並且我陷入了困境,我該如何從節點服務器獲取數據。我已經搜索了我發現的那個和每個鏈接,只是表明我必須使用ajax從服務器獲取數據,但我不想那樣做。如何使用Facebook Flux調用節點服務器以獲取Web應用程序中的數據?

由於我目前的應用程序是基於Angular和node js構建的,我可以通過$http服務輕鬆調用服務器來獲取數據。但是我沒有在反應或流量中發現那種東西,即使在反應文檔中沒有可用的路由概念,我們需要使用第三方組件進行路由。

所以我的問題是有什麼辦法,以便我可以從服務器獲取我的數據而不使用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

回答

1

陣營自稱是MVC中的視圖和離開它你來處理模型和控制器。這個想法是,它足夠開放使用任何你想要的ajax和路由的庫。就路由而言,React Router通常是我見過的解決方案。對於Ajax /數據獲取,Facebook正在努力開源他們的解決方案,稱爲Relay,但現在,您可以使用jQuery,vanilla js或任何第三方JavaScript插件來獲取數據。

React並不意味着取代Ember/Angular/WhateverJS,至少不是完全。它只負責你應用程序的視圖部分。唯一的目的是繪製視圖,然後在更改數據時智能地重繪它們。這意味着你必須關心路由和數據獲取。此外,Flux只是一種設計模式,它不是您需要和使用的庫。

+0

是的,我看了一下中繼但它的縮寫狀態,他們是仍在努力。但是我的問題仍然是一樣的,就好像我必須使用任何第三方API來獲取數據,那麼爲什麼我會使用反應或流量。 – Toretto 2015-02-06 15:29:23

+0

@Toretto我更新了我的答案,試圖澄清 – Josh 2015-02-06 15:38:24

1

Superagent是一個不錯的選擇ajax。這與在角度使用$ 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){ 

    }); 

這是一個好主意,以收集所有這些在一個地方一個模塊,你可以require你需要的地方進行實際的API調用。

至於路由,如果你不想使用像ReactRouter這樣的第三方庫,我認爲應該可以用window.location使用switch/case語句來滾動你自己,並且根據當前url來渲染不同的組件。您還必須在服務器上設置有效路線,以指向您的應用程序的相同入口點,或使用全路徑路線。

似乎React/Flux是'不完整的',因爲他們缺乏內在的方法去做這些事情,但他們在解決他們設計的特定問題方面做得很好。這是使用它們的一個很好的理由,即使它意味着將它們與其他工具結合使用以獲得所需的功能。

0

Flux是一個建築概念。特定的實現可能包括從服務器獲取數據的助手,但通常他們不這樣做,因爲這不是問題。Flux解決方案以及應用程序與服務器通信的方式可能因具體目標而異。

您可以使用任何您喜歡的方式(和庫)來獲取數據,但沒有內置的解決方案。

談論路由器。同樣,這不是Flux解決的問題。一些應用需要路由,而另一些則不需要。沒有理由將其包含在某些實現中。

沒有內置解決方案。最廣泛使用的路由庫REACT爲: https://github.com/rackt/react-router

我強烈建議從基礎做起,並通過概述徹底去: http://facebook.github.io/flux/docs/overview.html

相關問題