2011-12-01 7 views
14

これら3つのライブラリはすべて履歴オブジェクトを操作できます。 OK、バックボーンはもっと多くのことをしますが、それだけの歴史部分を考慮してみましょう。backbone.js、davis.js、history.jsによる履歴実装の相違

これら3実装の違いは何ですか?

答えて

15

History.jsは、HTML5 pushStateをネイティブにサポートしていないブラウザーや、pushStateのさまざまなブラウザー実装の違いを洗い出すためのpolyfilです。

Davis.jsは、主にpushStateの上にあるルーティングレイヤーです(これは、簡単にハッシュルーティングに切り替えることができます)。アプリケーション内のルートを定義して応答する簡単なAPIを提供します。

バックボーンのルーターはデイビスに似ていますが、pushStateが利用できない場合、ハッシュベースのルーティングに自動的にフォールバックしようとします。

Davisの著者として、私はわずかに偏っていますが、私はDavis APIがバックボーンよりやや優れていると思います。また、pushStateが利用できないときに、ハッシュベースのルーティングへの落ちこなしを適切に処理しようとすると、それがもたらすことができる複雑さと複雑さの価値がないとも思います。

+0

ありがとうございました:D –

+0

Iブラウザでhtml5 pushStateをサポートしているhistory.jsが "thorsteinsson/jquery-routes"& "mstahl/jQuery-Routes"で動作しないことが判明しました。 (これらのルータは#にURLが必要です)。 だから、Davis.jsとBackboneがうまくいくかどうか分からないのですか? – vee

+0

フォールバックをバックボーンで#にすることはできません – Tosh

0

ここに行く:

  • davis.jsのみHTML5 history.pushStateをサポートしています。ブラウザで動作しないブラウザはサポートされていないため、おそらくオプションはありません。
  • backboneとhistory.jsの両方がonhashchangeに置き換えられています。
  • 既に分かっているように、バックボーンもMVCを行い、それが依存するアンダースコアによって、機能的なもののための追加のヘルパーが与えられます。

実際には、追加のバックボーン機能が必要かどうかによって、明らかに選択肢が異なります。

+1

Davis.jsは、拡張機能によるハッシュベースのルーティングをサポートしています - https://github.com/olivernn/davis.js/blob/master/lib/extensions/davis.hashRouting.js –