Угловое использование # в URL

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

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

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

1 ответ

Решение

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

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

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

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

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

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

# в URL представляет идентификатор привязки ( RFC1738) и очень полезен при ссылках на определенный контент на странице.

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

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

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

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

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

http://localhost:4200/

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

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

Другие вопросы по тегам