所有这三个库都允许操作历史对象。好的, Backbone 还有很多事情要做,但让我们只考虑它的历史部分。
这3种实现之间有什么区别?
最佳答案
History.js更像是一个polyfil,用于本机不支持HTML5 pushState的浏览器,以及用于消除pushState的不同浏览器实现之间的差异。
Davis.js是一个路由层,主要位于pushState之上(尽管可以很容易地切换到哈希路由)。它为您提供了一个简单的api,用于定义和响应应用程序中的路由。
Backbone的路由器类似于Davis,但是当pushState不可用时,它会尝试自动回退到基于哈希的路由。
作为Davis的作者,我略有偏颇,但我认为Davis api比主干框架更好,更强大。我还认为,在pushState不可用时尝试优雅地处理回退到基于哈希的路由是不值得的,因为这样做可能会导致工作量和复杂性。