Угловое использование # в URL - PullRequest
0 голосов
/ 29 сентября 2018

В настоящее время я работаю над анализатором URL, который форматирует и исправляет относительные ссылки.Я назначил некоторые символы специальными и включил «#».

Я обнаружил, что это становится проблемой, когда я обрабатываю страницы, разработанные с помощью Angular, потому что использует # в URL.Однако при чтении протокола IETF для именования URL кажется, что # являются зарезервированными символами.

Может кто-нибудь объяснить мне, как Angular взаимодействует с именованием URL?

1 Ответ

0 голосов
/ 29 сентября 2018

Стратегия маршрутизации

При настройке маршрутизации приложения в угловом проекте можно выбирать между обычной маршрутизацией HTML5 (PathLocationStrategy) или маршрутизацией "в стиле хеш-адреса" (HashLocationStrategy).

По умолчанию PathLocationStrategy, но маршруты в хэш-стиле можно реализовать, передав {useHash: true} в качестве второго параметра функции RouterModule.forRoot()

В соответствии с официальной документацией Angular относительно LocationStrategy и стилей URL браузера.:

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

Почему Angular поддерживает маршруты хэширования

A # в URL-адресе, представляющем идентификатор привязки ( RFC1738 ) и очень полезен при связывании с определенным контентом на странице.

То, что угловатое эксплуатирует с HashLocationStrategy, заключается в том, что любой контентпосле того, как символ # не отправлен на сервер - что делает его идеальным для хранения состояния приложения.

Почему это полезно

С хэш-маршрутизацией страницыперезагрузить (или пересмотреть через закладку) на подстранице, например

http://localhost:4200/#/articles/35

, не запрашивать сервер для подстраницы, а вместо этого возвращает главную страницу приложения

http://localhost:4200/

Таким образом, серверная реализация должна знать только о корневой странице (это единственное, что когда-либо будет запрошено)

Использование PathLocationStrategy (по умолчанию) серверадолжен быть настроен для обработки запросовдля каждого URL, который реализует ваше приложение.

...