5

Esiste una versione biforcuta/gestita di backbone che elimina completamente la necessità di jquery o zepto di utilizzare sia il router che le viste?Rimozione della dipendenza jquery/zepto su backbone.router e viste

Non mi dispiacerebbe usare la dorsale, ma non c'è modo di rovinare una dipendenza da jQuery sulla mia pagina solo per usarla.

Se una soluzione non esiste, qualcuno può pubblicare un succo di ciò che deve essere cambiato esattamente?

+0

Dato che il sistema di gestione degli eventi per le viste è basato su '$ .delegate' e amici, penso che tu sia molto sfortunato. –

+0

Infatti. :/[limitazione caratteri] – AntelopeSalad

risposta

9

Se si desidera che Backbone gestisca la manipolazione DOM, gli eventi DOM e le richieste AJAX, è necessario disporre di un'altra libreria per eseguire questa operazione. Non deve essere jQuery o Zepto - Backbone supporta anche Ender e potresti teoricamente utilizzare qualsiasi libreria che possa fare la selezione DOM e supportare un sottoinsieme di metodi in stile jQuery. Un rapido sguardo attraverso il annotated source code dimostra che sono necessari i seguenti metodi:

  • $(selector)
  • $.ajax()
  • $(selector).find()
  • $(selector).bind()
  • $(selector).unbind()
  • $(selector).delegate()
  • $(selector).remove()
  • $(selector).attr()
  • $(selector).html()

Se non si desidera Backbone a che fare con questa roba, è possibile rimuovere abbastanza facilmente i requisiti sovrascrivendo i metodi che li utilizzano - per esempio è possibile fare a meno di .attr() e .html() impostando Backbone.View.prototype.make = function() {}. O semplicemente non usare Backbone.View - che rimuove il bisogno di tutto tranne $.ajax() (a meno che non si usi pushState, nel qual caso è necessario anche il binding di eventi).

+0

Ok grazie, quindi in fondo non ne vale la pena? Sembra un sacco di cose da fare manualmente. - Modifica: continuerai a lasciarlo funzionare per qualche ora in più e ti contrassegnerò come corretto se non vengono fornite soluzioni. – AntelopeSalad

+0

Bene, come ho detto, non usare 'Backbone.View'. Quindi devi solo implementare '$ .ajax()'. Se non vuoi usare una libreria DOM, non otterrai comunque molto valore da 'Backbone.View'. – nrabinowitz

+1

Non sono d'accordo. Non è troppo folle pensare di selezionare un elemento usando getElementById() invece di usare jquery, o impostare l'attributo innerHTML di qualcosa, ecc. – AntelopeSalad

0

Si può provare a utilizzare jBone, questa è una libreria per le manipolazioni DOM nei browser moderni, jBone sviluppato speciale per Backbone, solo 2kb gzip e jQuery come API.