Перезагрузка Angular с использованием режима html5

0

Я отключил свой #, используя html5-режим в Angular.js, и использую grunt и узел как dev-сервер, однако перезагрузка и обновление возвращаются как 404.

Как включить сервер узлов в Grunt для перезагрузки страниц?

  • 0
    Вы использовали base href в основном HTML-шаблон.
  • 0
    Да, у меня есть .. Я установил его на /
Теги:
gruntjs

1 ответ

1

Предположим, что ваша точка входа в приложение - http://localhost/app/. Вы вводите эту страницу в адресную строку браузера, браузер отправляет запрос, сервер находит файл app/index.html в своем корневом каталоге документа и возвращает его. Теперь браузер находит теги сценариев в этом документе, запрашивает сценарии с сервера и выполняет их. Ваше приложение работает.

В какой-то момент угловой маршрут перескакивает и начинает манипулировать адресной строкой браузера. В какой-то момент он может отображать http://localhost/app/shop/order there. Теперь вы нажмете перезагрузку. Что происходит? Просто прочитайте этот ответ с самого начала, но с измененным URI:

... сервер не находит файл app/shop/order/index.html и отвечает 404.

Вы не можете избавиться от символа хэша без настройки сервера. Из https://docs.angularjs.org/guide/ $ location:

Серверная сторона

Использование этого режима требует перезаписи URL-адресов на стороне сервера, в основном вы должны переписать все свои ссылки на точку входа вашего приложения (например, index.html). Требование <base> также важно для этого случая, так как позволяет Angular различать часть URL-адреса, которая является базой приложения, и путь, который должен обрабатывать приложение.

Как сервер должен знать, что /app/shop/order является по существу запросом для /app, но /app/app.js или /app/partials/overView.html - это запросы на реальные файлы? Для этого вам нужно настроить сервер, и вам часто приходится реструктурировать приложение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню