Server side rendering with react-router本文檔不足以理解如何使用react-router 2在服務器端使用不同類型的http請求(如get,post,put等)來呈現響應組件。在細節如何使用react-router 2作爲expressjs的服務器端路由?
2
A
回答
3
寫作如何服務器端渲染反應&反應路由器的應用可能是非常大的話題。
我會認爲你是有經驗的用戶,你知道如何使用expressjs以及如何創建反應&反應路由器應用程序。
在渲染服務器端,您可以創建單獨的服務器路由器映射每個前端路徑或創建一個將採取所有URL。
後一種情況只需要一臺服務器路由器。 某處在您的服務器的路由器的底部(之前的錯誤路線)寫:
app.use('/*', function(req, res){ ... });
這條線路將捕獲的所有URL。
首先,我們需要關於網址的信息。我們不需要有關協議或域信息,因此我們只需要這樣:
var url = req.originalUrl;
關於方法的信息(POST,GET,PUT,DELETE),我們從獲得:
var method = req. method
如果你想你可以做出不同的路線,你將有:
app.post('/something', function(req, res) {...});
app.get('/something', function(req, res) {...});
沒關係。
第二件事,我們不使用瀏覽器歷史記錄作爲反應路由器!我們必須使用記憶歷史。
你的歷史記錄對象:
var history = createMemoryHistory(req.originalUrl || '/');
你傳遞的歷史對象路由器。
我喜歡創建我的根組件作爲參數歷史對象接受。 當我在前端使用它時,我傳遞了瀏覽器歷史記錄,並且當我在服務器渲染中使用它時,我傳遞了內存歷史記錄。
下面很簡單的例子服務器端渲染路徑如何能期待 (我還用EJS模板):
router.use('/*', function(req, res){
var history = createMemoryHistory(req.originalUrl || '/');
var initialState = {};
//do something with initialState according to url and request method
var staticHTML = ReactDOMServer.renderToString(
React.createFactory(App)({
history,
initialState
})
);
res.render('index', {
staticHTML,
initialState: JSON.stringify(initialState)
});
});
在這個例子中,你需要根據用戶的網址,並要求方法來填充INITSTATE。你的應用程序應該開始使用該init數據。
如果您使用redux,服務器端渲染也可以像魅力一樣工作。因爲我們有一個存儲和一個init狀態對象。然後您可以在渲染任何基本值期間通過。 例如,當您渲染對象列表時,您將其放入前端並傳遞到init狀態,然後進行渲染。然後呈現的頁面將具有值。
我在工作中反應+反應路由器+終極版+終極版反應的路由器+ expressjs例如,它不完全準備好,但工作的,你可以看到我是如何解決服務器渲染:
相關問題
- 1. 如何在服務器端路由中使用Aurelia路由器
- 2. websocket服務器的動態路由expressjs
- 3. 從服務器(Expressjs路由)發送消息到客戶端
- 4. react路由器:客戶端路由與服務器端路由
- 5. 我如何在expressjs中使用director作爲路由器
- 6. 鐵路由器服務器端路由的回調不工作
- 7. 鐵路由器服務器端的Meteor.user()
- 8. ReactRouter不能使用佔位符路由
- 9. 我們可以在nodejs中使用ui路由器與expressjs服務器端路由使用客戶端的angularjs路由。下面是示例
- 10. 如何強制路由的服務器端服務
- 11. 如何使用Meteor和Iron-Router響應服務器端路由?
- 12. Next.js服務器端的路由
- 13. 流星+反應:服務器端路由?
- 14. 服務器端渲染+ Riot.js路由?
- 15. Expressjs從angularjs路由路由
- 16. Angular 2 - 在服務路由
- 17. 如何使html5mode使用expressJs路由工作Angularjs
- 18. 如何使用QUdpSocket連接路由器後面的服務器和客戶端?
- 19. 無法使用ExpressJS路由器映射路由文件
- 20. 如何將ExpressJs服務器調用gulpfile?
- 21. 在服務器端使用帶有requirejs的路由
- 22. 從Expressjs路由
- 23. 客戶端UI路由與服務器端路由有何區別
- 24. 角2的WebPack-dev的服務器,路由不工作
- 25. 如何使用NextJS和React路由器呈現服務器端反應內容?
- 26. ExpressJs條件路由的ServiceStack客戶端路由
- 27. 使用ExpressJS的遊戲+ Web服務器
- 28. 角2路由不工作在部署到HTTP服務器
- 29. 服務器使用服務器端發送事件作爲servlet
- 30. DNN服務中的多路由路由映射器不工作