2017-12-03 63 views
0
使用ReactJS

我有需要與UI相互作用,並且在後端數據庫執行各種CURD操作,我們有一個角1.2應用程序,它具有UI和另一節點的應用和申請,用的NodeJS

目前我對於每個需要角色的應用程序都會向節點應用程序發送http請求,因此在這裏我有兩種不同的服務。

我想將這些操作組合成一個單一的服務意味着UI(React)和節點在一個服務中,就像在節點內部作出反應,當我啓動節點服務器時我應該也能夠通過UI訪問,我正在使用在節點中表達,在單個服務中使用ReactJS和Node的最佳方式是什麼。

回答

2

希望你使用express和nodejs。您可以將反應應用程序文件夾放置在某個名爲client的文件夾中的節點應用程序文件夾內然後從節點的應用程序,你可以做以下的服務器反應過來文件:

var app = express(); 
app.use(express.static(path.join(__dirname, 'client'))); 

後,所有的應用程序特定的路線,以滿足您的API,提供以下服務index.html的所有其他GET請求。

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname+'/client/index.html')); 
}); 
0

爲了執行從反應應用的HTTP請求(如果後端不要緊爲節點),我建議使用fetch api

fetch(url) 
    .then(response => response.json()) 
    .then(response => /* Do what you need with it */) 

Axios也著作頗豐,並提供相同結果:

axios.get(url) 
    .then(response => response => /* Do what you need with it */) 
    .catch(error => console.log(error)) 
+0

一旦我有反應和節點在一個服務我不會需要使https,我猜。 – user3649361

+1

不,您仍然必須從反應應用程序到節點應用程序進行http調用。即使它託管在同一臺服務器上,您的反應js文件也會下載到瀏覽器並從瀏覽器運行,而您的節點js文件將保留在其託管的服務器中。所以你仍然需要使用fetch或axios通過http進行通信。 – Saud