【问题标题】:Difference in history implementation by backbone.js, davis.js and history.js通过backbone.js、davis.js 和history.js 实现历史的差异
【发布时间】:2012-01-11 02:10:06
【问题描述】:

所有这 3 个库都允许操作历史对象。好的,主干还有很多功能,但我们只考虑它的历史部分。

这三种实现有什么区别?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    作为 Davis 的作者,我有点偏见,但我认为 Davis api 比骨干网更好,更强大。我还认为,在 pushState 不可用时尝试优雅地处理回退到基于散列的路由是不值得付出努力和复杂性的。

    【讨论】:

    • 我发现在浏览器中支持 html5 pushState 的 history.js 不能与“thorsteinsson / jquery-routes”和“mstahl / jQuery-Routes”一起使用。 (这些路由器在 url 中需要 # 才能工作)。所以,我不确定 Davis.js 和 Backbone 是否可以使用?
    • 您可以在主干中禁用回退到#
    【解决方案2】:

    给你:

    • davis.js 仅支持 HTML5 history.pushState。不支持的浏览器不受支持,因此可能不是一个选项。
    • backbone 和 history.js 都回退到 onhashchange。
    • 正如您已经知道的,主干也可以执行 MVC,并且通过它所依赖的下划线为您提供了额外的函数帮助器。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2018-06-08
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多