所有这三个库都允许操作历史对象。好的, Backbone 还有很多事情要做,但让我们只考虑它的历史部分。

  • http://documentcloud.github.com/backbone/#History
  • https://github.com/olivernn/davis.js
  • https://github.com/browserstate/history.js

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

    最佳答案

    History.js更像是一个polyfil,用于本机不支持HTML5 pushState的浏览器,以及用于消除pushState的不同浏览器实现之间的差异。

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

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

    作为Davis的作者,我略有偏颇,但我认为Davis api比主干框架更好,更强大。我还认为,在pushState不可用时尝试优雅地处理回退到基于哈希的路由是不值得的,因为这样做可能会导致工作量和复杂性。

    09-28 15:11