2011-12-01 51 views

回答

15

History.js更適用於瀏覽器的polyfil,它本身不支持HTML5 pushState,並且消除了pushState的不同瀏覽器實現之間的差異。

Davis.js是一個路由層,主要位於pushState之上(儘管這可以很容易地切換到散列路由)。它給你一個簡單的API來定義和響應你的應用程序中的路由。

Backbone的路由器與Davis類似,但當pushState不可用時,它會嘗試自動回退到基於散列的路由。

作爲戴維斯的作者,我略有偏見,但我認爲戴維斯api比骨幹略勝一籌。我還認爲,當pushState不可用時,試圖優雅地處理回退到基於散列的路由不值得它可以引入的努力和複雜性。

+0

感謝您的解釋:D –

+0

I發現history.js在瀏覽器中支持html5 pushState可以不用「thorsteinsson/jquery-routes」和「mstahl/jQuery-Routes」。 (這些路由器需要#在URL中工作)。 因此,我不確定那些Davis.js和Backbone是否可以使用? – vee

+0

您可以禁用主幹中的#回退 – Tosh

0

在這裏你去:只

  • davis.js支持HTML5 history.pushState。不支持的瀏覽器不支持,所以可能不是一個選項。
  • 骨幹網和history.js均具備故障恢復功能。
  • 正如你所知道的,骨幹也是MVC,並且通過它所依賴的下劃線爲你提供了額外的輔助功能。

這真的取決於您是否需要額外的骨幹功能,在這種情況下,這是一個明顯的選擇。

+1

Davis.js通過擴展支持基於哈希的路由 - https://github.com/olivernn/davis.js/blob/master/lib/extensions/davis.hashRouting.js –