BrowserRouter
Nó sử dụng API lịch sử , tức là nó không khả dụng cho các trình duyệt cũ (IE 9 trở xuống và các phiên bản cùng thời). Ứng dụng React phía máy khách có thể duy trì các tuyến sạch như example.com/react/route nhưng cần được hỗ trợ bởi máy chủ web. Thông thường, điều này có nghĩa là máy chủ web phải được định cấu hình cho ứng dụng một trang, tức là cùng index.html
được phân phát cho / phản ứng / đường dẫn tuyến hoặc bất kỳ tuyến nào khác trên phía máy chủ. Về phía máy khách, window.location.pathname
được phân tích cú pháp bởi bộ định tuyến React. Bộ định tuyến React kết xuất một thành phần mà nó đã được cấu hình để hiển thị cho / react / route .
Ngoài ra, thiết lập có thể liên quan đến kết xuất phía máy chủ, index.html
có thể chứa các thành phần hoặc dữ liệu được kết xuất cụ thể cho tuyến đường hiện tại.
HashRouter
Nó sử dụng hàm băm URL, nó không có giới hạn trên các trình duyệt hoặc máy chủ web được hỗ trợ. Định tuyến phía máy chủ độc lập với định tuyến phía máy khách.
Ứng dụng một trang tương thích ngược có thể sử dụng nó như example.com/#/react/route . Không thể sao lưu thiết lập bằng kết xuất phía máy chủ vì đó là / đường dẫn được phân phát ở phía máy chủ, hàm băm URL # / react / route không thể đọc được từ phía máy chủ. Về phía máy khách, window.location.hash
được phân tích cú pháp bởi bộ định tuyến React. Bộ định tuyến React kết xuất một thành phần mà nó đã được cấu hình để hiển thị cho / react / route , tương tự như vậy BrowserRouter
.
Quan trọng nhất, HashRouter
các trường hợp sử dụng không giới hạn ở SPA. Một trang web có thể có định tuyến phía máy chủ kế thừa hoặc thân thiện với công cụ tìm kiếm, trong khi ứng dụng React có thể là một tiện ích duy trì trạng thái của nó trong URL như example.com/server/side/route#/react/route . Một số trang có chứa ứng dụng React được phục vụ ở phía máy chủ cho / server / side / route , sau đó ở phía máy khách, bộ định tuyến React hiển thị một thành phần mà nó đã được cấu hình để hiển thị cho / react / route , tương tự như kịch bản trước đó.