Как работает приложение Angular, когда я ввожу URL-адрес непосредственно в браузере?

#javascript #html #angular

Вопрос:

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

Например. Когда я вхожу http://localhost/ , я знаю, что он появится на дисплее index.html
Но когда я вхожу http://localhost/asd , он все еще может работать, но результат сборки не содержал asd .
Как??? Дорогое ТАКОЕ сообщество.

Комментарии:

1. Документация Angular довольно хороша, я бы проверил информацию на маршрутизаторе angular.io/guide/routing-overview

Ответ №1:

Я постараюсь объяснить.

  1. Сервер начинается с обслуживания index.html.
  2. Если вы проверите содержимое index.html вы найдете

app-root или аналогичный селектор, который будет решать, какой компонент будет загружен.

  1. app-root-это селектор app.component.ts

Это означает, что по умолчанию он будет отображать app.component.

  1. Обратите внимание, что это вариант по умолчанию. http://localhost/asd и все остальные делают это по умолчанию.

Вы можете увидеть, как по умолчанию использовать другой компонент по умолчанию в этом стекблитце.

https://stackblitz.com/edit/my-angular-starter-g2kuyy?file=index.html

Примечание: Если вы хотите иметь разные наборы навигации, вы можете добиться этого с помощью маршрутизации.

Комментарии:

1. Мой вопрос в том, что произойдет, если я напишу маршрут asd в приложении angular. А затем создайте его, выходные файлы не содержат asd.html . Так почему же, когда я набираю localhost/asd текст непосредственно в браузере, он все еще может находить содержимое компонентов asd? Я понимаю вашу точку зрения, но разве это не значит, что вы должны сначала открыться index.html ? Даже если я открою пустую вкладку и введу localhost/asd ее, все равно все будет в порядке

Ответ №2:

Сервер, вероятно, настроен для ответа с помощью HTML-документа, который загружает приложение Angular для любого URL-адреса, который обычно выдает ошибку 404.

Комментарии:

1. Я использую Golang с ДЖИН-фреймворком. И просто использовать gin.Default()

Ответ №3:

Как?

В любом случае, если вы получите доступ к URL-адресу, такому как http://my-url.com или http://localhost/ , и передадите все, что после / этого, он будет работать, если вы не сделали перенаправление на страницу 404 или куда хотите.

Почему?

Потому что ваш URL-адрес правильный и не обрабатывает то, что вы передаете в качестве параметра своего URL-адреса, если вы не заставите его обрабатывать его.

Комментарии:

1. Нет, я имею в виду. Я создаю угловое приложение в папке под названием dist . Но в этой папке я могу найти только index.html и другие файлы, не относящиеся к html. Но когда я развертываю эту dist папку на работающем веб-сервере. и введите localhost/asd , он все еще может найти нужный контент, который я разместил в приложении angular. Как же так?

Ответ №4:

Как оказалось, я настраиваю свой сервер go так , чтобы направлять все 404 страницы на index.html так, чтобы при вводе http://localhost/asd в панель навигации они направлялись на index.html , а /asd затем обрабатывались одностраничным приложением angular с windows.location.url