Es gibt so viel in Ihrer Frage, dass die Antwort wird nicht einfach sein und wird überhaupt nicht eindeutig sein. Es wird auch sehr eigensinnig sein. Wenn ich auf die von Ihnen mitgebrachte Liste von Rahmenbedingungen schaue, sehe ich sehr unterschiedliche Dinge, die kaum miteinander vergleichbar sind. Ich werde versuchen, sie irgendwie zu gruppieren und der Liste weitere Frameworks hinzuzufügen.
Die Hauptfrage hier ist nicht die Vor- und Nachteile eines bestimmten Rahmens. Die Hauptfrage ist: Wie viel willst du? Hast du wirklich eine Anwendung wie Gmail oder Grooveshark gemeint? Oder meinst du etwas wie Stackoverflow - eine Dynamik und gar nicht einfach, aber dennoch eine Website. Betrachten wir all diese Optionen.
Vielleicht möchten Sie nur Ihre Website mit einigen Widgets, wie Tabs, Dialoge, einige Drag/Drop-Elemente, Textbearbeitung, etc. verbessern und Sie sind nicht bereit, Ihr Entwicklungsmodell zu ändern. Ich meine, Sie verwenden Ihr Lieblings-Java/PHP/Ruby und möchten nicht viel von der Logik und dem Verhalten Ihrer App in JavaScript schreiben. In diesem Fall sind jQuery-basierte Plugin-ähnliche Lösungen für Sie geeignet, insbesondere jQuery UI und jQuery Mobile.
jQuery-Widgets folgen seinem Plugin-System. Dies bedeutet in der Regel, dass sie extrem einfach zu bedienen sind.Um eine Schaltfläche zu erstellen, schreiben Sie:
$('#myButton').button();
Nun, wenn Sie es deaktivieren möchten, rufen Sie eine Methode folgendes Muster verwenden:
$('#myButton').button('disable');
Und immer oder Werte einstellen, z.B. auf Slider oder Datepicker, sieht so aus:
$('#mySlider').slider('value');
$('#mySlider').slider('value', 42);
Wie Sie sehen, haben jQuery-basierte Lösungen kein Modell. Alle Ihre Daten werden im DOM gespeichert und über skurrile Methodenaufrufe erhalten. Wenn Sie Ihre Daten dynamisch verarbeiten müssen, z. mache einige komplexe Validierungen, lade etwas im Hintergrund, filtere oder sortiere, dann siehst du, dass das bald chaotisch wird. Dies ist übrigens das Problem, dass das jQuery-UI-Team noch keine Grid-Kontrolle zur Verfügung gestellt hat - sie können dies nicht ohne ein Modell tun. In jQuery Mobile erhalten Sie eine nette mobile UI durch einfaches Markup, aber es gibt keine offizielle Möglichkeit, Daten zwischen Seiten zu übergeben.
Zusammenfassend: Wenn Sie eine mehrseitige Website haben, wenn Sie Ihre Formulare POST, dann verwenden Sie jQuery UI oder eine leichtere Lösung wie Twitter Bootstrap.
Vielleicht möchten Sie etwas komplexerer, anwendungsähnlicher (eine einseitige Anwendung?). Sie wissen, dass Sie mit Daten auf der Clientseite arbeiten müssen. Was sind Ihre Möglichkeiten?
Sie können eine von vielen JavaScript-Frameworks verwenden, die Sie mit den Modellen zur Verfügung stellen, die Datenbindung und wahrscheinlich andere Mittel der Web-Anwendungen erstellen und integrieren sie mit, warum nicht jQuery UI. Oder Sie können ein vollständigeres Framework wie Kendo oder Wijmo oder jqWidgets verwenden. Diese Frameworks basieren auf jQuery (Wijmo beruht auf jQuery UI) und bieten zusätzliche Möglichkeiten der Datenmanipulation. Sie haben ein Datenmodell. Kendo implementiert seine eigene Lösung (denke ich), während Wijmo und jqWidgets in den beliebten Knockout JS integriert sind.
Also Kendo und Wijmo gehören zu der Gruppe von Frameworks, die sowohl Widgets/Controls als auch einige Backing-Modelle zur Verfügung stellen. Es gibt andere Frameworks wie diese, die nicht auf jQuery basieren, z. Dojo Toolkit. Fügen Sie einige dynamische Daten hinzu und Sie erhalten eine ziemlich komplexe Webanwendung. Was willst du mehr?
Eigentlich ist das Wichtigste vergessen - wie strukturieren Sie Ihre Anwendung? Wenn Sie versuchen, eine Single-Page-App zu erstellen, die REST-konform mit dem Server kommuniziert, werden Sie bald in Schwierigkeiten geraten, wenn Ihre Anwendung keine Architektur hat. Die Features, die normalerweise dafür benötigt werden, sind einige Probleme Trennung (MVC, MVVM), Templating, Routing und Modul-Management. Hier erscheinen SproutCore und Sencha. Sie bieten eine umfassende Lösung zum Erstellen von Web-Apps, wo Widgets nur ein kleiner Teil sind.
Es scheint, als ob SproutCore und Sencha hier die Gewinner sind, weil sie die umfassendsten Lösungen sind, die sowohl UI als auch die Geschäftslogik enthalten und auch Ihre Anwendung strukturieren. Trotz aller Vorteile gibt es einige Nachteile. Manche sagen, sie sind zu schwergewichtig oder müssen sich an ihr Entwicklungsmodell halten, was Ihnen vielleicht nicht gefällt. Zum Beispiel beschreiben Sie in Sencha Ihre GUI in JavaScript und benutzen Senchas Typsystem. Dies fügt eine Art schweres Gefühl hinzu, dass es Abstraktionen und Wrapper gibt, während Sie die Leichtigkeit von HTML, CSS und Vanilla JavaScript mögen.
Aber das ist nicht der einzige Weg. Die Macht des Internets ist, dass es viele, viele Frameworks, Bibliotheken, Tools gibt, und große, die Ihnen helfen werden, Ihre App so zu gestalten, wie Sie es mögen. Betrachten Sie beispielsweise AngularJS. Es bietet nicht eine Reihe von Kontrollen selbst, aber in Kombination mit Twitter Bootstrap wird eine komplette Lösung für RIA.Oder schauen Sie sich zum Beispiel EmberJS an, ein leichteres Framework von dem Typ, der den schwergewichtigen SproutCore erstellt hat. Es enthält auch keine Widgets, ist aber meiner Meinung nach eine sehr gute Basis für eine App.
Also hier ist mein letzter Gedanke statt der Schlussfolgerung. All diese Frameworks zeigen normalerweise ihr Widget-Set, gut aussehende Themes und die anderen visuellen Dinge. Aber was wirklich wichtig ist, ist, wie Sie Ihre Anwendung tatsächlich entwickeln, wie Sie sie strukturieren, wo Sie Ihre Logik implementieren werden. Erfahren Sie, was das Framework bietet und überlegen Sie, ob Sie das ersetzen können, was fehlt.
Trotz der Mangel an Präzision meiner Frage ist dies eine ausgezeichnete Antwort und es hat mir den größten Teil der "Nebel". Es stimmt, es gibt so viele JS-Bibliotheken, Frameworks, dass jemand, der in dieses Universum eintritt, vielleicht ein bisschen verwirrt ist, wie ich. Über Architektur, ich entwickle mit nodejs und folge dessen express.js Web Framework. Ich schaue vorwärts, um eine Seite interaktive Anwendungen zu entwickeln, werde ich checking die man Sie erwähnen :) Vielen Dank – jviotti
große Antwort :) –