状态我指的是URL更改,保留浏览器history.back()并能够在有任何更改时更新页面(通过回调我猜)。
我尝试了几种方法,每种方法都有其优点和缺点。 例如,我喜欢Backbone.js通过其路由器管理URL的方式,因为它通过window.location.hash(#)工作,如果你手动更改URL,它会被路由器捕获,允许你执行手动变化很简单。 关于Backbone我不喜欢的是这种格式的网址"#/ a / b / c / d / e" (违反经典的http标准"?a = 1& b = 2& c = 3"。这意味着网址参数需要按特定顺序排列,并且没有名称。当然您可以修复解析URL并将路由器表达式视为单个字符串,因此它不是一个大问题。 另外,我认为仅使用Backbone作为其路由器它有点矫枉过正(包括整个BackBone),所以我喜欢其他解决方案。
下一个是History.js,它是为了提供新HTML5标准的兼容性? 但我不喜欢它的行为和Backbone的行为一样。我的意思是,在HTML5浏览器中,#转换为?如果您在URL中更改了某些内容,则会重新加载整个页面。 此外,由于缺少路由器,您需要设置更多的侦听器,如$(window).bind(' statechange')和$(window).bind(' hashchange' )。这也不是一个大问题,但我想知道是否有其他方法可以做到这一点。
我总是说"没有正确的方法可以做某事,但却有不同的方法来实现它"。但是为了能够选择其中一种方式,我想了解不同的可能性。
您如何看待这个问题,这在开发单页时越来越常见? 我研究了一下,但我找到的所有答案都很老了(> 1年+)所以我对艺术水平很感兴趣......