[vue-router] Разница между режимом хеширования и режимом истории

vue-router

Внешняя маршрутизация

использоватьVue+vue-routerСоздать одностраничное приложение очень просто,vue-routerПредоставляемая функция состоит в том, чтобы сопоставлять компоненты с маршрутами, а затем отображать их.vue-routerНеобходимо удовлетворить две потребности

  1. Запись статуса текущей страницы
  2. Вы можете использовать функции браузера вперед и назад

а такжеvue-routerЧтобы удовлетворить два вышеуказанных требования, реализованы следующие три функции.

  1. Измените URL-адрес, не позволяя браузеру сделать запрос к серверу.
  2. Обнаружение изменений URL
  3. Перехватывать URL-адреса и анализировать необходимую информацию для соответствия правилам маршрутизации.

Особенности хеш-режима

Хэш представляет собой символ # (также известный как якорь) в URL-адресе адресной строки.Хотя хэш будет отображаться в URL-адресе, он не будет включен в HTTP-запрос, поэтому изменение значения хеша не будет перезагружено. страница.

Поскольку изменение значения хеша не приведет к тому, что браузер отправит запрос на сервер, а изменение хеша вызовет событие hashchange, браузер также может управлять движением вперед и назад, поэтому до появления HTML5 хэш в основном использовался для реализовать интерфейсную маршрутизацию.

Особенности режима истории

Воспользуйтесь преимуществами нового HTML5pushState()а такжеreplaceState()Два API, через которые переход по URL не будет перезагружать страницу

В то же время режим истории решает проблему режима хеширования.Хэш-параметр основан на URL-адресе.Если вы хотите передать сложные данные, будут ограничения по объему.Режим истории может не только передавать параметры в URL-адресе , но также хранить данные в конкретном объекте

реализация vue-маршрутизатора

Разница между режимом хеширования и режимом истории для достижения vue-router jump api

api hash history
push window.location.assign window.history.pushState
replace window.location.replace window.history.replaceState
go window.history.go window.history.go
back window.history.go(-1) window.history.go(-1)
forward window.history.go(1) window.history.go(1)