54

Ich fand viele HTML5 UI-Frameworks da drüben, wie zum Beispiel:HTML5 UI Frameworks

Ich bin irgendwie mit wieder so viel Ressourcen da draußen überwältigt. Sah einige von ihnen, aber fast alle schienen wie zu langsam und Schwergewicht.

Ich bin ein bisschen verwirrt darüber, welche ich lernen werde. Jede ihrer Websites sprechen über ihr Produkt, als ob sie die besten auf dem Markt sind. (offensichtliche Marketingstrategien).

Als Anfänger auf Web-Apps Entwicklung und clientseitigen Frameworks JS UI; Sie, basierend auf Ihrer Erfahrung, welche empfehlen Sie für schnelle Desktop-Web-Anwendungen Entwicklung unter Berücksichtigung der Geschwindigkeit, Widget-Sammlungen, Komplexität, Aussehen, Unterstützung, etc.?

Welchen empfehlen Sie mir zu lernen?

weiß, dass ich es viele Antworten geben könnte und jeder unterschiedliche bevorzugen könnte, aber dies könnte mir helfen, ein wenig zu führen und einige Kritiker einiger der beliebtesten Frameworks haben.

Antwort

129

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.

+3

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

+1

große Antwort :) –

4

Die Antwort von Infeligo ist erstklassig. Meine Erfahrung könnte für einige von Interesse sein. Ich verwende Ruby on Rails als meine Serverplattform, auf der sich der Großteil meiner Geschäftslogik befindet.

Am Frontend verwende ich dHTMLX, das ist eine JS-Bibliothek von "Objekten", von denen das stärkste ihr Gitterobjekt ist. Die meisten meiner Apps haben Anforderungen an die Verarbeitung/Anzeige von geschäftlichen/buchhalterischen Informationen und das Rasterobjekt ist meine Hauptstütze. Ihr Objektsatz ist jedoch umfassend, einschließlich der Möglichkeit, zusätzliche "Fenster" innerhalb der einzelnen Anwendung zu erstellen, um dem Endbenutzer eine MDI-Typ-Schnittstelle bereitzustellen. Ich habe normalerweise ein Login-Formular, das bei erfolgreicher Anwendung eine einzelne HTML-Seite mit einem Menü oben öffnet. Basierend auf der Auswahl aus dem Menü werden neue Fenster geöffnet und geschlossen, um Informationen anzuzeigen/zu bearbeiten. Diese Fenster liegen im Bereich der einzelnen HTML-Seite.

Alle Objekte haben sehr gute Ereignisse mit ihnen verbunden und ich mache ziemlich viel Validierung am Frontend mit diesen Ereignissen. Allerdings dupliziere ich normalerweise auch alle Validierungen von Daten innerhalb des Rails-Modells. Es ist zusätzliche Arbeit, aber ich bin nur besonders vorsichtig. Es gibt auch eine Anzahl von abstrakten Objekten, die dabei helfen, Daten zwischen den visuellen Front-End-Objekten zu verbinden, z. Grid- und Back-End-Server. Die meisten Datenverbindungen können mit XML oder JSON durchgeführt werden. Ich verwende XML über JSON, einfach aufgrund meiner Erfahrung mit dieser Struktur und der Tatsache, dass Rails einen anständigen XML-Builder bietet. In meinem Fall verwende ich selten Rails-basierte Ansichten, da alle meine visuellen Objekte von dHTMLX stammen.

Die andere Sache, die ich an dHTMLX mag, ist die Geschwindigkeit ihrer Objekte. Zum Beispiel wird das Gitterobjekt ziemlich leicht 10.000+ Zeilen mit sehr akzeptablen Geschwindigkeiten handhaben.

Die BIG DOWNSIDE der Suite ist es Dokumentation. Das Unternehmen ist ein osteuropäischer Entwickler und deshalb ist es oft schwierig, genau zu verstehen, was ihre Dokumentation bedeutet. Auch ihre Dokumentation neigt nicht dazu, alles vollständig zu dokumentieren, und so wird beim Versuch und Irrtum beim Lernen viel Zeit verschwendet.

Hoffe, das hilft

+3

(Disclaimer: Ich arbeite bei DHTMLX). Danke, dass Sie die DHTMLX-Bibliothek erwähnt haben. Wir verbessern ständig die Dokumentation und versuchen, sie lesbarer zu machen. Wenn Sie in der Dokumentation nichts finden, können Sie im Forum (http://forum.dhtmlx.com/) Hilfe anfordern, die vom technischen Team von dhtmlx überwacht wird. – Paul

Verwandte Themen