2011-12-01 9 views

risposta

15

History.js è più di un polyfil per i browser che non supportano nativamente HTML5 pushState e per stirare le differenze tra le diverse implementazioni del browser di pushState.

Davis.js è uno strato di routing, principalmente in cima a pushState (sebbene possa essere facilmente sostituito con il routing hash). Ti dà una semplice API per definire e rispondere ai percorsi all'interno della tua applicazione.

Il router di Backbone è simile a Davis, tuttavia tenta di tornare automaticamente al routing basato su hash quando pushState non è disponibile.

Come autore di Davis, ho un po 'di pregiudizio, ma penso che la Davis api sia leggermente più bella e più potente della dorsale. Penso anche che tentare di gestire con garbo il ritorno al routing basato su hash quando pushState non è disponibile non vale lo sforzo e la complessità che può introdurre.

+0

Grazie per la spiegazione: D –

+0

I trovato che history.js con il supporto pushtate html5 nel browser non può funzionare con "thorsteinsson/jquery-routes" e "mstahl/jQuery-Routes". (Questi router richiedono # in url per funzionare). quindi, non sono sicuro che quelli con Davis.js e Backbone funzioneranno? – vee

+0

È possibile disabilitare il fallback su # in backbone – Tosh

0

Qui si va: supporta solo

  • davis.js HTML5 history.pushState. I browser che non funzionano con esso non sono supportati, quindi probabilmente non è un'opzione.
  • Sia backbone che history.js hanno fallback su onhashchange.
  • Come sapete già backbone fa anche MVC e attraverso underscore su cui dipende dà ulteriori aiutanti per cose funzionali.

Dipende davvero se è necessaria la funzionalità aggiuntiva Backbone, nel qual caso è una scelta ovvia.

+1

Davis.js supporta il routing basato su hash tramite un'estensione - https://github.com/olivernn/davis.js/blob/master/lib/extensions/davis.hashRouting.js –