Javascript backbone.js、davis.js和history.js在历史实现上的差异

Javascript backbone.js、davis.js和history.js在历史实现上的差异,javascript,backbone.js,browser-history,history.js,Javascript,Backbone.js,Browser History,History.js,所有这3个库都允许操作历史对象。好吧,骨干做了很多,但是让我们只考虑它的历史部分。 这三种实现之间有什么区别?给您: davis.js仅支持HTML5 history.pushState。不支持不使用它的浏览器,因此可能不是一个选项 主干和history.js都有onhashchange的回退 正如你们已经知道的,主干网也做MVC,通过它所依赖的下划线,可以为你们提供更多的功能性帮助 这实际上取决于您是否需要额外的主干功能,在这种情况下,这是一个明显的选择。History.js对于

所有这3个库都允许操作历史对象。好吧,骨干做了很多,但是让我们只考虑它的历史部分。

这三种实现之间有什么区别?

给您:

  • davis.js仅支持HTML5 history.pushState。不支持不使用它的浏览器,因此可能不是一个选项
  • 主干和history.js都有onhashchange的回退
  • 正如你们已经知道的,主干网也做MVC,通过它所依赖的下划线,可以为你们提供更多的功能性帮助

这实际上取决于您是否需要额外的主干功能,在这种情况下,这是一个明显的选择。

History.js对于本机不支持HTML5 pushState的浏览器来说更像是一个多功能工具,可以消除pushState的不同浏览器实现之间的差异

js是一个路由层,主要位于pushState之上(尽管可以很容易地切换到散列路由)。它为您提供了一个简单的api来定义和响应应用程序中的路由

主干网的路由器类似于Davis,但当pushState不可用时,它会尝试自动退回到基于哈希的路由


作为Davis的作者,我有点偏颇,但我认为DavisAPI比backbones稍微好一点,功能更强大。我还认为,在pushState不可用的情况下,试图优雅地处理返回到基于散列的路由是不值得的。Davis.js确实通过扩展支持基于散列的路由-我发现浏览器中支持html5 pushState的history.js无法使用“thorsteinsson/jquery路由”和“mstahl/jquery路由”。(这些路由器需要#in url才能工作)。因此,我不确定那些Davis.js和主干网是否可以工作?您可以禁用回退到#in主干网