В этой статье приводится довольно убедительный аргумент в пользу того, что, поскольку URL-адреса являются долгоживущими (они помещаются в закладки и передаются), они должны быть значимыми, и что использование хеша для реальная маршрутизация (определение того, какие данные отображаются на странице и / или состояния приложения), таким образом, является неправильной. Однако, когда я пытаюсь сделать сделать это в моем одностраничном приложении, я сталкиваюсь с проблема: как мне отобразить мои ссылки, чтобы все браузеры могли использовать приложение? На мой взгляд, есть три варианта:
href
имеют # /
префикс. Это отлично работает в браузерах HTML4. В браузерах HTML5 я могу добавить маршрут Sammy , который перенаправляет на версию без хеширования, которая lso отлично работает. Может возникнуть проблема с тем, что браузеры помечают ссылки как посещенные, когда они не были, или не отмечают их как посещенные, когда они есть. Другая проблема в том, что это ... неправильно. Любой, кто поделится ссылкой, щелкнув ее правой кнопкой мыши и выбрав «Копировать URL-адрес», будет отправлять рабочий, но неуклюжий URL-адрес. href
имеют префикс # /
. Насколько я могу судить, браузеры HTML4 не смогут перехватить эти клики по ссылкам, а это значит, что каждый вызовет обновление страницы.Хотя приложение, вероятно, все еще будет работать, поскольку я мог бы использовать маршруты Sammy для переписывания версий без хеширования в хешированные при загрузке страницы, загрузка страницы убьет производительность одностраничного приложения. # /
или нет. Это означает, что все мои ссылки должны иметь динамическую разметку, что значительно усложняет приложение.