亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個關于react-router和后端路由的問題?

一個關于react-router和后端路由的問題?

森林海 2018-10-24 14:11:52
我寫的個人博客的項目,前端用的react-router,后臺用的express,后臺只提供接口,我點擊導航條上面的選項,路由就會改變,然后切換到不同的組件,如圖顯示的。但是當我直接改變瀏覽器地址的url時,服務器就會報404錯誤,我大概理解是因為這樣會請求后臺接口,問題來了,是不是每寫一個前端路由,后臺也要相應寫一個路由?
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

當然不是你想的這樣,否則也太蠢了不是么?

問題在于你需要明白一件事情:前端路由是在頁面內的 js 代碼加載并執行完成之后才能正常工作的,當它開始工作的時候,URL 的變化就不再是傳統意義上的刷新,而是跟蹤 history 的變化。

那么什么時候加載成功了呢?一般來說就是通過 index.html 來加載的(這就是 spa 的最基本形態)

你手動刷新了非根路徑的 URL 之后為什么 404 呢?很顯然,這一次刷新之后得到的響應是你的后端提供的,并且不再是 index.html 了,那么你既沒有后端對應的路由也無法通過 index.html 加載前端路由,不 404 還能是什么呢?

你有兩種選擇,一難一易。

難的是做同構處理,也就是前后端使用同一套路由,react router 本身是支持同構的,你可以參考它文檔里關于 isomorphic 或 server side rendering 相關的內容。

易的是后端做全局路由匹配,無論是發過來的請求 URL 是什么,統統返回 index.html 讓前端去匹配不同的 URL。


查看完整回答
反對 回復 2018-11-15
  • 1 回答
  • 0 關注
  • 819 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號