backbone.js,davis.js和history.js在历史实现方面的差异

时间:2011-12-01 23:11:42

标签: javascript backbone.js browser-history history.js

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

这三种实施有什么区别?

2 个答案:

答案 0 :(得分:15)

对于浏览器而言,History.js更像是一个polyfil,它本身不支持HTML5 pushState,并且可以解决pushState的不同浏览器实现之间的差异。

Davis.js是一个路由层,主要在pushState之上(虽然这可以很容易地切换到哈希路由)。它为您提供了一个简单的API来定义和响应应用程序中的路由。

Backbone的路由器与Davis类似,但是当pushState不可用时,它会尝试自动回退到基于散列的路由。

作为戴维斯的作者,我有点偏颇,但我认为戴维斯api比主干更好,更强大。我还认为,当pushState不可用时,试图优雅地处理回退到基于散列的路由是不值得的,它可以引入的努力和复杂性。

答案 1 :(得分:0)

你走了:

  • davis.js仅支持HTML5 history.pushState。不支持使用它的浏览器,因此可能无法选择。
  • 主干和历史.js都有回归onhashchange。
  • 正如你所知,骨干也做了MVC,并通过它所依赖的下划线为你提供额外的帮助功能。

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