В настоящее время я использую маршрутизатор Backbone для своего SPA. Это вроде работает нормально, но я имею ряд небольших вопросов:Альтернатива магистральному маршрутизатору без хэш-резервов и лучшая поддержка состояния назад/вперед?
Проблема в том, - я хочу, либо иметь pushState
навигацию или ни один, а это означает - приложение состояние запускается на выполнение (когда я пройти «начальный» URL-адрес маршрутизатора или я запускаю маршрут через JS), но адресная строка не изменяется. Я не хочу, чтобы хеш-хенджеры возвращались для IE9. Он будет работать нормально, если IE9 не получит кнопку «Назад» и меняющуюся адресную строку, но сохраняет состояние навигации в приложении. Затем я могу показать пользователям URL-адрес, который они могут добавить в закладки, и сервер будет маршрутизировать эту страницу, а состояние приложения будет загружаться на основе исходного URL-адреса. Адресная строка, не изменяющаяся в IE во время навигации в приложении, является компромиссом, который я готов принять.
Еще одна проблема, с которой я столкнулся, заключается в том, что я использую navigate(url, {trigger: true})
для моих перехваченных HREF, а кнопка возврата не работает (ничего не делает). Но мне действительно нужно изменить состояние приложения на перемотку вперед/назад, даже если он будет восстановлен для этого конкретного URL-адреса - я бы предпочел перестроить состояние.
Каковы мои возможности в отношении маршрутизаторов, которые я мог бы использовать? Как я уже сказал, я не хочу иметь hashbang fallbacks (значение - я хочу только иметь один способ представления URL-адресов в приложении, период).
Что следует использовать? Director.js? History.js? Кажется, что существует довольно много библиотек роутера/истории, но кто из них наиболее близок к тому, что я ищу? ..
Попробуйте http://millermedeiros.github.io/crossroads.js – mfirry
Привет @Julik, когда вы говорите, что адресная строка не меняется, это означает, что если вы пишете начальный путь, например 'domain.com/page/one' будет отображать контент, и он останется на этом пути« навсегда »? Даже если вы перейдете на другую страницу? –
Я имею в виду, что в IE я буду перехватывать клики по элементам 'a' и изменять состояние приложения в ответ на это, но он не будет записан в истории браузера - и URL-адрес останется там, где он находился при загрузке страницы , – Julik