Frage an client-side, backbone.js, jquery, javascript, web-applications – Entfernen der Abhängigkeit von jquery / zepto von backbone.router und views

5

Gibt es eine gespaltene / gewartete Version von Backbone, die die Verwendung von JQuery oder Zepto für Router und Views vollständig überflüssig macht?

Es würde mir nichts ausmachen, Backbone zu verwenden, aber ich würde auf keinen Fall eine JQuery-Abhängigkeit von meiner Seite erzwingen, nur um sie zu verwenden.

Wenn es keine Lösung gibt, kann jemand einen Überblick darüber geben, was genau geändert werden muss?

Tatsächlich. : / [Zeichenbeschränkung] AntelopeSalad
Vorausgesetzt, das Event-Handling-System für Views basiert auf$.delegate und Freunde, ich denke, Sie haben sehr viel Pech. mu is too short

Deine Antwort

3   die antwort
0

jBone, dies ist eine Bibliothek für DOM-Manipulationen in modernen Browsern, jBone wurde speziell für Backbone entwickelt, nur 2kb gzipped und jQuery like API.

9

DOM-Ereignisse und AJAX-Anforderungen verarbeiten soll, benötigen Sie hierfür eine andere Bibliothek. Es muss nicht jQuery oder Zepto sein - Backbone unterstützt auch Ender, und Sie können theoretisch jede Bibliothek verwenden, die eine DOM-Auswahl durchführen kann und eine Teilmenge von Methoden im jQuery-Stil unterstützt. Ein kurzer Blick durch diekommentierter Quellcode 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 nicht möchten, dass Backbone mit diesen Dingen umgeht, können Sie die Anforderungen ziemlich einfach entfernen, indem Sie die Methoden überschreiben, die sie verwenden - z. Sie können darauf verzichten.attr() und.html() indem man es einstelltBackbone.View.prototype.make = function() {}. Oder einfach nicht benutzenBackbone.View - das beseitigt die Notwendigkeit für alles andere als$.ajax() (es sei denn, Sie verwendenpushStateIn diesem Fall benötigen Sie auch eine Event-Bindung.

Dem stimme ich nicht zu. Es ist nicht zu verrückt, daran zu denken, ein Element mit getElementById () auszuwählen, anstatt jquery zu verwenden oder das innerHTML-Attribut von etwas usw. festzulegen. AntelopeSalad
Nun, wie gesagt, benutze es einfach nichtBackbone.View. Dann müssen Sie nur noch implementieren$.ajax(). Wenn Sie nicht bereit sind, eine DOM-Bibliothek zu verwenden, werden Sie nicht viel Nutzen daraus ziehenBackbone.View sowieso. nrabinowitz
Ok, danke, im Grunde ist es die Mühe nicht wert? Das scheint eine Menge zu sein, die man von Hand erledigen muss. - Bearbeiten: Lasse dies noch ein paar Stunden laufen und markiere dich als korrekt, wenn keine Lösung angegeben ist. AntelopeSalad
Richtig - aber der Punkt ist,Backbone.View ist ziemlich leicht ("mehr Covention als Code", laut Dokumentation) und fast alleMethoden benötigen eine DOM-Bibliothek. Die größte Unterstützung, die die Klasse bietet, ist das Event-Handling, das zwar reimplementiert werden kann, aber schmerzhaft ist. Nehmen Sie all das Zeug weg und Sie haben eine Klasse, die Sie selbst in 10 Minuten schreiben können, plus einige Best-Practice-Konventionen. nrabinowitz
4

https://github.com/inkling/backbone.native. Es ist ein winziger Adapter, mit dem Backbone funktioniert und nur native DOM-APIs verwendet werden können.

Verwandte Fragen