2015-11-04 111 views
4

我有一個簡單的應用程序,顯示用戶的評論列表。當用戶點擊時,應用程序應該轉到/users/<id>並顯示一個新頁面,其中包含將從MongoDB查詢的用戶詳細信息。我很難理解邏輯應該在哪裏。我應該使用快遞,客戶端反應路由器還是服務器端反應路由器?

我看到使用反應路由器在客戶端類似的例子:

render((
<Router> 
    <Route path="/" component={App}> 
    <Route path="/user/:userId" component={User}/> 
    </Route> 
</Router> 
), document.body) 

而且像這樣在服務器端:

<Route name="root" path="/" handler={require('./handlers/Root')}> 

而且還採用快遞路由:

app.get('/', function home (req, res, next) { 
    res.render('layout', { 
    reactHtml: React.renderToString(<App />) 
    }); 
}); 

app.get('/user', function home (req, res, next) { 
    res.render('layout', { 
    reactHtml: React.renderToString(<User />) 
    }); 
}); 

哪一條路要走?有什麼區別?

+0

你是怎麼決定這麼做的?我不確定React Router和Express應該如何協同工作。 – jro

回答

0

有了反應,你做單頁的應用程序,所以你永遠不會重新載入頁面,以表達你讓一臺服務器,如Apache和PHP

+0

所以你說我應該只提供一個節點的文件,然後在客戶端擁有我所有的邏輯? – Yuval

+0

如果您選擇製作React應用程序是 – SharpEdge

+0

該方法如何與服務器端渲染一起使用?似乎只有根元素會被渲染,然後每個東西都將成爲客戶端 – Yuval

2

陣營應用程序通常最初的客戶端只,隸屬節點你已經注意到了。這使得它如此快速:只有API調用,不需要重新渲染。

同構應用程序也運行在服務器上,這對於回退(無JS)以及搜索引擎優化和社交共享(Facebook需要閱讀HTML元標記很有幫助,這並不容易實現,您也可以獲得真正看中和水合物從服務器渲染,從而加速這些更深層次的網頁的用戶體驗。

,你可能永遠都不會要的是隻呈現服務器端,類錯過陣營的全部力量。

起始客戶端,帶有一些很好的樣板文件,如https://github.com/erikras/react-redux-universal-hot-example,這將帶你一路同形並返回。