Как я могу использовать # -URL в одностраничном приложении?

В этой статье приводится довольно убедительный аргумент в пользу того, что, поскольку URL-адреса являются долгоживущими (они помещаются в закладки и передаются), они должны быть значимыми, и что использование хеша для реальная маршрутизация (определение того, какие данные отображаются на странице и / или состояния приложения), таким образом, является неправильной. Однако, когда я пытаюсь сделать сделать это в моем одностраничном приложении, я сталкиваюсь с проблема: как мне отобразить мои ссылки, чтобы все браузеры могли использовать приложение? На мой взгляд, есть три варианта:

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

15
задан James A. Rosen 11 October 2011 в 17:55
поделиться