Для чего предназначена PushState?

Я видел, как последний backbone.js(0.5) представил опцию pushState для маршрутизации.

После прочтения https://developer.mozilla.org/en/dom/manipulating_the_browser_history Я должен сказать, что мне не очень понятно: что такое pushState и что именно это означает, что PushState приносит, в контексте написания веб-приложения с позвоночником; это для:

  • улучшать URL-адреса: иметь "реальный", доступный для закладки, "доступный для сервера" URL-адрес, в отличие от хэшей?

  • изящная деградация: разрешить серверу отображать правильные страницы без включенного JS?

  • оба/ничего из вышеизложенного или другие причины?

Кроме того, что я делаю неправильно ниже?:

class MyRouter extends Backbone.Router
  routes :
    ''       : 'index'
    '#hello' :'hello'

  index : -> console.log 'index'
  hello: -> console.log 'hello'

new MyRouter

Backbone.history.start pushState: true

Когда я перехожу к http://localhost#hello, url изменяется на http://localhost/#hello, но обратный вызов не запускается?

Спасибо

Ответ 1

Вам не нужен префикС# в таблице маршрутов. Попробуйте следующее:

  routes :
    ''       : 'index'
    'hello'  : 'hello'

Что касается pushState, я думаю, что это оба из вышеперечисленных. Это означает большую работу на стороне сервера, чем вам придется делать с хешем местоположения, потому что вам нужно будет убедиться, что ваш сервер может обслуживать страницы для всех этих URL-адресов.