javascript API window.history при загрузке первой страницы

Я пытаюсь реализовать маршрутизатор javascript с API-интерфейсом window.history. Я давно использую ui-router, но хочу создать свой собственный роутер для своих небольших приложений. Все выглядит нормально, пока не возникает такая проблема: я обслуживаю свою страницу по адресу localhost:8080/index.html. Я перенаправляю страницу со свойствами, связанными с API истории. Когда я нажимаю на маршрут, я теряю часть index.html. Например, URL становится localhost:8080/home. Когда я напрямую пытаюсь перейти в это состояние, как вы ожидаете, я естественным образом получаю ошибку 404. Как заставить перенаправить index.html в это состояние?


person erdysson    schedule 07.12.2015    source источник
comment
Можете поделиться кодом своего роутера? Например, часть, которая не работает должным образом?   -  person Pandaiolo    schedule 07.12.2015
comment
Я могу привести ссылку в качестве примера. Я нашел его, когда искал решение и лучшие практики. То же самое происходит и здесь.   -  person erdysson    schedule 08.12.2015
comment
проблема в том; после того, как вы перейдете к нескольким состояниям, когда вы обновляете браузер, он пытается отправить запрос   -  person erdysson    schedule 08.12.2015
comment
Вот как работает история HTML5, она должна быть связана с переписчиком URL-адресов на сервере, чтобы каждый URL-адрес преобразовывался для вызова index.html за кулисами. Если у вас нет доступа к серверу, вам следует использовать/разработать вместо этого классический маршрутизатор с hashbang : index.html#/my/route или не использовать маршрутизацию javascript и просто полагаться на архитектуру папок сервера для организации html-файлов.   -  person Pandaiolo    schedule 08.12.2015
comment
Я избегал использования хэша, но без него, я думаю, никак. Спасибо за ответ   -  person erdysson    schedule 08.12.2015


Ответы (1)


История HTML5 (pushState и т. д.) работает путем перезаписи URL-адреса на стороне клиента. Следовательно, сервер также должен иметь возможность переписывать URL-адрес и загружать один и тот же файл index.html независимо от URL-адреса.

Без этой перезаписи сервера возможны два варианта:

  • Используйте маршрутизатор JavaScript hashbang на основе URL-адреса, такого как /idex.html#!/current/path

  • Не используйте JavaScript для маршрутизации, а просто полагайтесь на структуру каталогов сервера, чтобы обслуживать разные файлы для каждой конечной точки.

person Pandaiolo    schedule 08.12.2015
comment
Я просто бросал себе вызов, чтобы создать пользовательский интерфейс, такой как angular, crossroads.js или history.js. Я решил использовать hashbang и выглядит хорошо :) - person erdysson; 08.12.2015
comment
Прохладно ! Можете ли вы подтвердить мой ответ, если он вас устраивает? Спасибо ! - person Pandaiolo; 08.12.2015