#javascript #html #angular
Вопрос:
Я знаю, что Angular работает с помощью так называемого Одностраничного приложения.
Но что меня озадачило, так это то, что когда я ввожу URL-адрес непосредственно в браузере. Он все еще может найти нужную страницу.
Например. Когда я вхожу http://localhost/
, я знаю, что он появится на дисплее index.html
Но когда я вхожу http://localhost/asd
, он все еще может работать, но результат сборки не содержал asd
.
Как??? Дорогое ТАКОЕ сообщество.
Комментарии:
1. Документация Angular довольно хороша, я бы проверил информацию на маршрутизаторе angular.io/guide/routing-overview
Ответ №1:
Я постараюсь объяснить.
- Сервер начинается с обслуживания index.html.
- Если вы проверите содержимое index.html вы найдете
app-root или аналогичный селектор, который будет решать, какой компонент будет загружен.
- app-root-это селектор app.component.ts
Это означает, что по умолчанию он будет отображать app.component.
- Обратите внимание, что это вариант по умолчанию. 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