Wo passt jQuery zu Frameworks wie JavaScriptMVC, BackboneJS, SproutCore und Knockout?

14

Ich benutze JQuery seit 2 Jahren sehr gerne und habe ziemlich erfolgreich einige wirklich coole Funktionen damit erstellt ... also fühle ich mich sehr wohl damit. Ich glaube auch, dass die Zukunft des Webs auf dem aktuellen Client-seitigen Pfad fortgesetzt wird.

Jedoch...

Die nächste Herausforderung scheint in Form verschiedener Controller-Frameworks zu bestehen: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (die Liste geht weiter).

Additonally, gibt es einige große AMD Loader - Tools für den Einsatz wie RequireJS oder LabJS usw. Aber jetzt jQuery hat defineund thenFähigkeiten backene in.

Es wird immer schwieriger, den Überblick zu behalten ...

Und jetzt scheint es meine Aufgabe zu sein, eine strategische Richtung für die Verwendung einer Form von MVC- oder MVVM-Framework-Client-Seite zu evaluieren / zu entscheiden ... aber ich habe so viele Fragen.

  • Wo passt JQuery zu den verschiedenen oben genannten Controller-Frameworks?
  • Ist JQuery neben verwendet jeder oder einige von ihnen zu tun haben ihre eigenen ‚ JQuery -styled Version‘ backene in?
  • Werden Tools wie RequireJS noch benötigt, wenn Sie eines der verschiedenen oben genannten Controller-Frameworks implementieren?
  • Hat der defineund thenFähigkeiten backene in JQuery jetzt supercede der AMD Loader oben erwähnt?
  • Welches scheint am modularsten zu sein? (siehe Anmerkungen unten)

ANMERKUNGEN:
Eine Sache, die ich in keinem zukünftigen Framework haben möchte, ist die Forderung, große Mengen an Funktionen einbeziehen zu müssen, die ich nicht benutze. Das heißt, ich würde lieber ein Framework verwenden, das wirklich modular ist. Um beispielsweise die jQuery-Benutzeroberfläche zu verwenden, müssen Sie viele andere Kernbibliotheken aufnehmen, die Sie möglicherweise nicht verwenden.

Ich werde mit jedem experimentieren, aber ein echtes Feedback wäre großartig. Ich habe einige "ähnliche" Fragen gesehen, aber keine hat den obigen Versatz wirklich beantwortet.

Danke im Voraus!

Gefangener NULL
quelle

Antworten:

11

jQuery ein browserübergreifendes Normalisierungstool. Es gibt Ihnen Folgendes

  • DOM-Dienstprogramme
  • Ereignissystem
  • Ajax
  • Animationen
  • ES5-Dienstprogramme
  • eine andere Sache

Backbone / Knockout / Yada / Yada sind MVC-ähnliche Bibliotheken, mit denen Sie modulare Anwendungen strukturieren und schreiben können. Sie brauchen diese nur, wenn Sie ihre Struktur wollen.

RequireJS / yada / yada sind Modullader. Sie benötigen eine Form von Modullader, wenn Sie eine modulare Anwendung schreiben möchten.

Wo passt JQuery zu den verschiedenen oben genannten Controller-Frameworks?

Wie bereits erwähnt, normalisiert jQuery Browser. Controller-Frameworks nicht. Sie brauchen jQuery nicht, aber Sie brauchen eine Möglichkeit, um Browser zu normalisieren.

Wird JQuery nebeneinander verwendet oder haben einige von ihnen ihre eigene "JQuery-gestaltete Version"?

In Backbone / Knockout / JavaScriptMVC ist keine Browsernormalisierung integriert, daher benötigen Sie ein Tool dafür. Ich bin mir nicht sicher, ob SproutCore eine Menge zu bieten hat.

Werden Tools wie RequireJS noch benötigt, wenn Sie eines der verschiedenen oben genannten Controller-Frameworks implementieren?

Diese werden nur benötigt, wenn Sie schreiben, um modulare Anwendungen zu schreiben. So ziemlich ja.

Es gibt drei Arten von modularen Anwendungen

  • Async erfordert Loader wie requireJS
  • Sync benötigt Loader wie modul8
  • Verwenden von Namespaces und Einschließen von Dateien
  • Pakete wie Ender

Ersetzt die in JQuery integrierte Funktion "Define and Then" nun den oben genannten AMD Loader?

Nein. Die in jQuery integrierte Definitionsfunktion ermöglicht es Ihnen, sie mit einem AMD-Loader zu verwenden, ohne jQuery umbrechen zu müssen. Sie benötigen noch einen AMD Loader. Die "Dann" -Fähigkeit ist nur ein Teil des aufgeschobenen jQuery-Zuckers.

Welches scheint am modularsten zu sein? (siehe Anmerkungen unten)

Das ist eine meinungsgebundene Frage. Meine persönliche Meinung ist, dass all diese Frameworks, einschließlich jQuery, aufgebläht und nicht modular sind.

Sie möchten modular, schreiben Ihre eigene Bibliothek, schreiben Ihre eigene Architektur.

Wenn Sie jedoch das geringere Übel wollen, würde ich das Rückgrat wählen, weil es einfach und klein ist oder die Wirbelsäule ähnlich ist

Raynos
quelle
Danke Raynos ... Ich kann mich immer auf Sie verlassen, wenn Sie eine großartige Antwort erhalten!
Gefangener
@Marjan Ich warte auf alle anderen, denen es auch wichtig sein könnte, Beiträge einzureichen.
Gefangener
@PrisonerZERO: damit überhaupt kein Problem. Da Sie mit der Antwort von Raynos zufrieden zu sein schienen, war mein Kommentar nur für den Fall, dass Sie keine Antwort akzeptieren wollten (ich habe Ihr Profil nicht überprüft und Ihr Mitarbeiter schlägt vor, dass Sie hier ein ziemlich neuer Benutzer sind)
Marjan Venema
2

Ich werde auf JavaScriptMVC antworten, da ich ein Mitwirkender bin:

Wo passt JQuery zu den verschiedenen oben genannten Controller-Frameworks?

JavaScriptMVC hängt von jQuery ab und verwendet es in großem Umfang.

Wird JQuery nebeneinander verwendet oder haben einige von ihnen ihre eigene "JQuery-gestaltete Version"?

JavaScriptMVC hat keine konkurrierende Funktionalität mit jQuery. Dies ist bei Backbone mit einem eigenen Ereignissystem nicht der Fall. Aber alles, was Rückgrat oder Wirbelsäule hinzufügt, ist sehr minimal.

Werden Tools wie RequireJS noch benötigt, wenn Sie eines der verschiedenen oben genannten Controller-Frameworks implementieren?

JavaScriptMVC wird mit einem Abhängigkeitsverwaltungssystem geliefert -> stehlen. Sie können JavaScriptMVC mit RequireJS verwenden, aber stehlen ist tatsächlich viel leistungsfähiger und hat ungefähr die gleiche Größe, die ein Benutzer heruntergeladen hat.

Welches scheint am modularsten zu sein? (siehe Anmerkungen unten)

Dies wird nicht beurteilt. JavaScriptMVC ist extrem modular aufgebaut. Sie verwenden nur das, was Sie brauchen. Im Vergleich zu Backbone oder Wirbelsäule können Sie die Einzelteile M, V oder C verwenden. Zusammengebaut ist es nur 1 KB größer als Backbone (bei Verwendung von jQuery und Underscore). Die verschiedenen Größen der Basiskomponenten finden Sie hier: https://github.com/jupiterjs/javascriptmvc/issues/26

Aber JavaScriptMVC ist viel leistungsfähiger (in Bezug auf Funktionen) als Backbone oder Spine. Beispielsweise verhindert die Ereignisbehandlungsroutine praktisch alle Speicherverluste. Hier ist ein Tooltip, der sich beim Klicken auf das Fenster selbst versteckt:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Dies ist beim MVC-Ansatz von entscheidender Bedeutung, wenn Ihre Steuerelemente Änderungen im Modell abhören, z.

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Der Controller hebt die Bindung aller dieser externen Ereignishandler automatisch auf.

Einige andere Stärken nur der MVC-Teile:

  • $ .Class ist ein sehr mächtiges Klassensystem
  • $ .View und $ .Model unterstützen zurückgestellte Dateien
  • $ .Controller kann Event-Handler neu binden
  • $ .Model unterstützt Assoziationen, Getter / Setter, Defaults und Validierungen

Jetzt ist JavaScriptMVC viel mehr als nur MVC-Teile (die Teil des jQueryMX-Unterprojekts sind). Es hat:

  • jQueryMX - Fehlende jQuery-Funktionen wie spezielle Ereignisse, Dom-Helfer usw.
  • Steal - ein Abhängigkeitsmanagementsystem. Aber es kann Dinge tun, wie eine Ajax-App zu nehmen und Google crawlbar zu machen.
  • FuncUnit - Ein unglaublich leistungsfähiges Test-Framework.

Nun, was zu verwenden ist, hängt viel davon ab. Viel hängt davon ab, ob Sie eine "App" oder eine "Seite" erstellen. Eine Anwendung, die getestet werden muss, Abhängigkeitsmanagement, bei der Sie sich um Speicherverluste kümmern, würde ich JMVC oder SproutCore anschauen.

Wenn Sie ein paar grundlegende Widgets zusammenkleben, würde ich auf die Wirbelsäule oder das Rückgrat schauen.

Justin Meyer
quelle
"Wirbelsäule oder Rückgrat, Sie können die Einzelteile M, V oder C verwenden." Mit der Ausnahme, dass M, V und C genauso groß sind wie das Rückgrat und die Wirbelsäule.
Raynos
Das ist nicht wahr. Backbone ist 5k mit seiner Unterstreichungsabhängigkeit. Ich bin mir nicht sicher, was Wirbelsäule ist. Aber hier ist die Aufteilung: Klasse: 1k, Controller: 1,74k, Modell: 2,8k, $ .View: 1,6k, $ .String: 0,5k. Für insgesamt 8.6k. Das sind 3k mehr, aber viel mehr nützliche Funktionen.
Justin Meyer
Würden Sie JavaScriptMVC mit so etwas wie Kendo UI-Steuerelementen verwenden? Welche anderen Kontrollen?
Prisoner ZERO
Ja, jede jQuery-basierte UI-Bibliothek sollte einwandfrei funktionieren (sofern das Ereignissystem von jQuery für Ereignisse verwendet wird).
Justin Meyer
Ich sollte beachten, dass Backbone Zepato anstelle von jQuery verwenden kann, was es viel weniger macht als die kombinierten JMVC-MVC-Abhängigkeiten mit jQuery. Aber ohne jQuery verlierst du einiges.
Justin Meyer