it-swarm.com.ru

В чем разница между hashHistory и browserHistory в реагирующем маршрутизаторе?

Я немного погуглил, но не нашел четкого ответа на следующий вопрос: в чем разница между hashHistory и browserHistory в реагирующем маршрутизаторе?

39
Ben Bieler

Основное отличие состоит в том, что hashHistory использует такие URL-адреса, как: http://myurl.com/#page/another_page/another_page

С BrowserHistory вы получаете нормальные URL (без хэша): http://myurl.com/page/another_page/another_page

43
smcdrc

Я не думаю, что вопрос заключается в различиях в формате, а скорее в техническом. Поэтому делимся этим ответом здесь с техническим отличием: https://stackoverflow.com/a/42157741/2445694

В основном браузер не отправляет URL после #

Поэтому предположим, что на сайте запрещены зоны для участников и администраторов. Пользователь переходит к/member и получает запрос на вход в систему. Однако сервер не будет знать, пытался ли пользователь получить доступ к/admin или/member, прежде чем войти на страницу входа, поэтому после входа на сервер не знать, куда перенаправить. 

3
luanped

1) Массив местоположений истории браузера содержит больше, чем просто местоположения, которые были посещены в нашем приложении. Разрешение доступа к этому списку приведет к утечке информации об истории посещений пользователя, к которой веб-сайтам запрещен доступ.

2) История браузера создает объекты местоположения, путь которых является полным путем URL. Тем не менее, вы можете указать базовое имя для истории, и в этом случае часть полного пути будет эффективно игнорироваться.

3) История браузера на статическом файловом сервере будет иметь одно реальное местоположение на нашем сервере, из которого можно извлечь наш HTML-код, в то время как история хеширования использует раздел хеш-функции URL-адреса для установки и чтения местоположений. 

4) История хэширования зависит от того, как она хранит всю информацию о пути в хэше URL. 

1
MERLIN THOMAS

Первое отличие:

Они используют разные веб-API. <HashRouter> использует и читает хэш из URL, <BrowserRouter> использует window.history WEB API.

Второе отличие:

<HashRouter> используется для статического одностраничного сайта. Идеально подходит для браузерных проектов .<BrowserRouter> используется для динамического сайта. Должен использоваться, когда у вас есть сервер, который будет обрабатывать динамические запросы (знает, как реагировать на любые возможные URL).

1
Bojan Golubovic