5

Gibt es eine gegabelte/beibehaltene Version des Backbones, die die Verwendung von jquery oder zepto für die Verwendung des Routers und der Views komplett überflüssig macht?Entfernen der jquery/zepto-Abhängigkeit von backbone.router und Views

Ich hätte nichts dagegen, Backbone zu verwenden, aber es gibt keine Möglichkeit, würde ich eine Abhängigkeit jquery auf meiner Seite zwingen, nur um es zu verwenden.

Wenn eine Lösung nicht existiert, kann jemand einen Kern dessen, was genau geändert werden muss, posten?

+0

Da das Event-Handling-System für Views auf '$ .delegate' und Freunden basiert, denke ich, dass Sie sehr viel Pech haben. –

+0

In der Tat. :/[Zeichenbeschränkung] – AntelopeSalad

Antwort

9

Wenn Backbone mit DOM-Manipulation, DOM-Ereignissen und AJAX-Anforderungen umgehen soll, benötigen Sie eine andere Bibliothek. Es muss nicht jQuery oder Zepto sein - Backbone unterstützt auch Ender, und Sie könnten theoretisch jede Bibliothek verwenden, die eine DOM-Auswahl treffen kann und eine Teilmenge von jQuery-ähnlichen Methoden unterstützt. Ein kurzer Blick durch die annotated source code zeigt, dass Sie die folgenden Methoden benötigen:

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

Wenn Sie mit diesem Zeug beschäftigen nicht Backbone wollen, können Sie ziemlich leicht die Anforderungen entfernen, indem sie die Methoden zu überschreiben, die sie verwenden - zum Beispiel Sie können auf .attr() und .html() verzichten, indem Sie Backbone.View.prototype.make = function() {} einstellen. Oder verwenden Sie einfach nicht Backbone.View - das entfernt die Notwendigkeit für alles außer $.ajax() (es sei denn, Sie verwenden pushState, in diesem Fall benötigen Sie auch Ereignisbindung).

+0

Ok danke, also ist es im Grunde nicht die Mühe wert? Das scheint eine Menge Überschreiben manuell zu tun. - Edit: Lassen Sie das noch ein paar Stunden laufen und markieren Sie als korrekt, wenn keine Lösungen gegeben sind. – AntelopeSalad

+0

Nun, wie gesagt, verwende einfach nicht "Backbone.View". Dann müssen Sie nur '$ .ajax()' implementieren. Wenn Sie nicht bereit sind, eine DOM-Bibliothek zu verwenden, werden Sie sowieso nicht viel von "Backbone.View" bekommen. – nrabinowitz

+1

Ich stimme damit nicht überein. Es ist nicht zu verrückt, an ein Element zu denken, indem man getElementById() anstelle von jQuery benutzt oder das innerHTML-Attribut von etwas setzt. – AntelopeSalad

0

Sie können versuchen, jBone verwenden, das ist Bibliothek für DOM-Manipulationen in modernen Browsern, jBone speziell für Backbone entwickelt, nur 2kb gziped und jQuery wie API.