我看到最新的backbone.js(0.5)介绍了用于路由的pushState选项.
阅读https://developer.mozilla.org/en/dom/manipulating_the_browser_history后
我不得不说,这不是很清楚:pushState是什么,在使用骨干编写Web应用程序的时候,pushState是什么呢?是为了:
改进网址:具有“真实”,书签,“服务器可达”的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,但回调不被触发?
谢谢
解决方法
您的路由表中不需要#前缀.尝试这个:
routes : '' : 'index' 'hello' : 'hello'
至于pushState我认为它们都是上述的.这意味着服务器端的工作要比您对位置哈希进行更多的工作,因为您必须确保您的服务器可以为所有这些URL提供页面.