Die Gefahren der Verwendung von ExtJS für ein großes Projekt mit RoR?
Entwickeln wir eine erheblich große Applikation mit Ruby, Ruby on Rails framework (CRM-system) und überlegen zu umschreiben, es zu verwenden, ExtJS so, dass die Schienen würden, nur tun Sie das Daten-handling, während ExtJS alles tun würde, was der browser heavylifting in einem desktop-ähnlichen Weise.
Jemand einige Erfahrungen und Tipps über das, was wäre der beste Ansatz? Ist ExtJS reif genug sind, um verwendet werden, die in relativ großen (und komplexen) Anwendungen? Und was ist mit den Schienen Teil - was wäre der beste Ansatz hier?
EDIT:
Damit das klar ist. Ich würde es vorziehen, es zu tun in einer Weise, dass alle javascript-client-Seite der Anwendung code geladen wird, einmal (beim starten der Anwendung, optimal als komprimierte js-Datei) und dann nur ajax verwenden, um Daten zu senden und von Rails-app. Es wäre auch schön, ERB verfügbar für die dynamische Generierung des Ext apliccation Elemente.
InformationsquelleAutor der Frage Milan Novota | 2008-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Momentan habe ich eine extrem große, desktop-Stil-app, geschrieben in ExtJS. Es verwendet, um auf der Oberseite des Perl-Catalyst-MVC-framework, sondern einmal die gesamte View-Schicht umgewandelt wurde, um eine ExtJS-basierten desktop-ich begann die Migration auf Ruby on Rails models und Controllern. Es ist genauso schnell, wenn nicht schneller, und einfacher zu pflegen und hat eine viel kleinere code-Basis.
Stellen Sie sicher, dass Ihre active record config an an nicht auf die root-name des Modells in der json, so dass Extern die JsonStore hat kein problem beim Lesen der Datensätze. Es gibt eine option auf ActiveRecord-BASE genannt
include_root_in_json
müssen Sie auf false gesetzt.Stellen Sie sicher, dass Sie korrekt definieren, Ihre Anwendung Klassen in Ext und maximieren Sie den code wieder verwenden und Sie gehen zu wollen, eine Art von Methode bereinigen von nicht verwendeten Knoten in die DOM. Javascript-performance kann eine echte Schmerzen, es sei denn, Sie sind mit den neuesten Versionen von Safari oder Firefox 3.1.
Werden Sie wahrscheinlich wollen eine Art von caching-Verfahren für Daten auf dem server, um bedient zu werden, um Ihre Anwendung in JSON-format zu der Zeit die Seite geladen wird. Dies wird abgeholzt die Anzahl der round-trips über Ajax.
Jeden Fall machen die Nutzung von Ext - WindowManager und StoreManager Objekte oder Rollen Sie Ihre eigenen von Ext.util.MixedCollection
Entwickeln Sie Ihren code in separate, überschaubare Dateien, dann haben Sie einen build-Prozess, die kombiniert Sie in einer einzigen Datei, und führen Sie dann YUI compressor oder Dean Edwards Packer auf es zu komprimieren /verschleiern der Datei. Dienen alle JS und CSS in Ihre eigenen einzelnen Dateien, einschließlich der Extern gelieferten lieben.
InformationsquelleAutor der Antwort Jonathan Soeder
[2012 aktualisiert] ExtJS wurde erworben von Sencha, die bieten eine GPLv3-Lizenzund zwei kommerzielle Lizenzen.
[2008-Oct-Kommentar] ExtJS ist großartig auf technische Vorzüge, aber das Fiasko mit der Lizenzierung vor einigen Monaten haben mich dazu geführt, den Blick auf andere frameworks - I don ' T Vertrauen die Macher von ExtJS jetzt überhaupt. Ich weiß nicht, wie Sie formuliert Ihre Lizenz, und wie Sie vorgab, open-source-Befürworter, während Sie offensichtlich versucht, profit zu Unrecht aus denen, die Ihnen geglaubt.
Ich bin nur gegen die Verwendung von ExtJS aus moralischen Gründen.
InformationsquelleAutor der Antwort Chii
Diese gehört in Antwort auf Milan ' s Kommentar zu meiner vorherigen Antwort, aber als Neuling hier habe ich nicht genug Rufpunkte zu Antworten, die es gibt:
Gab es ein problem mit der "sp undefiniert", die ein Ergebnis von Schienen' Cachen von JavaScript-Dateien in eine große Datei (es würde mehrere hundert Dateien anders). Die Zwischenspeicherung eingeführt, einige seltsame Fehler mit den Zeilenumbrüchen, die warf die ganze Sache ab. Dies hatte mir mein Haar ziehen für eine Weile, aber die Lösung war ein update von Ruby 1.8.6 (patch level 72) auf den neuesten 1.8.7. Diese behoben das problem, so überprüfen Sie bitte wieder, wenn Sie wollen, um einen Blick zu haben (Sie müssen tun, eine vollständige Aktualisierung zu schlagen, das asset-caching).
Ich bin froh, dass Sie gekommen sind, über die Ext MVC-Zeug vor. Derzeit kann ich voll glauben, dass es muss sehr schwierig sein, zu verstehen, hauptsächlich wegen Mangel an Beispielen, tutorials und demos. Der code an sich ist Recht gut dokumentiert ist, jedoch (zumindest der neuere code sowieso, gibt es eine Menge, die einer Klärung Bedarf).
Ich bin derzeit in den Prozess der Umgestaltung ein paar wichtige Klassen, bevor Sie bereit ist für einen richtigen 'release'. Wenn das fertig ist (ich denke, ein paar Wochen), werde ich generieren der Dokumentation und stellen eine schnelle Website mit einigen demos und Beispiel-code. Wenn ich das getan habe, werde ich noch ein post auf meinem blog (http://edspencer.net).
Mein Ziel hierbei ist es, zu versuchen, Rahmenbedingungen zu schaffen, die die Erstellung dieser Art von Anwendung viel einfacher und auf etablieren einige Konventionen. Derzeit gibt es keinen Konsens oder Standard-Art der Strukturierung von ExtJS-Anwendungen, also alles, was wir tun können, um zu bewegen, die entlang wird ein Schritt in die richtige Richtung! Kommentare und Beiträge sind mehr als willkommen.
InformationsquelleAutor der Antwort Ed Spencer
Habe ich erfolgreich im Einsatz eine große RoR/ExtJS app der Art, die Sie beschreiben ("single-Seite" client-seitige AJAX-driven). Ext_scaffold ist ziemlich viel rot-Hering.
Es ist nicht zu anstrengend zu Holen RoR und ExtJS arbeiten reibungslos zusammen. Die grundlegende Entscheidung ist, ob Sie verlängern ExtJS "sprechen Schienen", patch RoR zu sprechen "ExtJS", oder in der Mitte treffen. Es wird davon abhängen, wo Ihr team unter Beweis stellen.
Nahm ich den meet-in-the-middle-Strategie, die beinhaltet:
Ext.data.Store
undExt.data.Record
sich bewusst sein, der Rails-routing-KonventionenExt.grid.EditorPanel
undExt.form.BasicForm
gut zu spielen mit ActiveRecord VerbändeActiveRecord::Base
undApplicationController
einfach übertragungen ausExt.grid.EditorPanel
undExt.form.BasicForm
Das ist ziemlich viel es.
Having said that, es gibt Nachteile zu ExtJS.
InformationsquelleAutor der Antwort Dave Nolan
Möchten Sie vielleicht einen Blick auf den Netzke framework, das gedacht wird, um genau das zu tun: erleichtern das erstellen komplexer one-page-web-Anwendung mit dem Schwerpunkt auf einem modularen Ansatz.
Die Vorteile von Netzke sind:
Wiederverwendbarkeit und Erweiterbarkeit von code. Sobald Sie Ihre Komponente (client-und server-Seite) vorgenommen haben, können Sie es wiederverwenden, in jedem Ort, in Kombination mit anderen Komponenten, oder das event verlängern Sie es mit der Vererbung.
Effizienz. Klasse für jede Komponente wird vom server geladen (und ausgewertet) nur einmal, das spart eine Menge Zeit auf server-client-Kommunikation.
Es ist open source, und es ist in der aktiven Entwicklung. Es hat live-demos und Beispiel-code.
Es vorgefertigte Komponenten, die Sie sofort nutzen können, ohne Sie sogar zu berühren Ext JS (nur so konfigurieren, dass Sie in Rails)
Es ist benutzt worden (durch den Autor) für real-life-Entwicklung eines komplexen Logistik-Anwendung.
Nachteile Netzke sind:
Wenn Sie interessiert sind, haben Sie einen Blick auf die Beschreibung und design-details hier: https://github.com/nomadcoder/netzke-core
Live-demo/tutorials können hier gefunden werden: http://netzke-demo.herokuapp.com und hier: http://yanit.heroku.com
InformationsquelleAutor der Antwort mxgrn
Extern ist definitiv reif genug um mit dieser situation umzugehen. Ich arbeite aktuell an einem Rails-Projekt mit viel Ext, und der schwierigste Teil war definitiv die Arbeit mit Rails s
to_json
zu Rendern, JSON, Ext Lesen kann (für arrays, hashes, - Modelle, die die überprüfung nicht bestanden, etc.)Check-out der ext_
scaffold
plugin für Rails. Ich begann mit diesem und gehackt entfernt an seineActiveRecord
/ActionView
Erweiterungen, bis es Tat, was ich brauchte, es zu tun.InformationsquelleAutor der Antwort Ben
Ich einige Erfahrung mit ExtJS mit Schienen zu. Mit dem framework ist ein guter Weg, um einige gut aussehende widgets kostenlos. REST-Konvention sollte gut mit dem Rahmen zu, wenn Sie es verwenden, zu entwickeln, single-page-Anwendungen. Funktioniert gut mit den RJS auch.
Hier sind meine gripes mit Rahmen
Können Sie nicht wirklich machen verwenden von flash[:notice] da das nachladen einer einzelnen Seite, die Anwendung ist albern. Dies macht die übergabe Validierung Mitteilungen und Nachrichten eine lästige Pflicht, da Sie zu verwenden RJS/javascript-Methoden, um Ihnen zu zeigen.
Können Sie nicht verwenden, erb so viel Sie haben zu Kapseln, eine Menge von der Logik in die json-callbacks.
InformationsquelleAutor der Antwort JasonOng
Habe ich bereitgestellt ExtJS und Schienen für eine Reihe von Anwendungen und das haben Sie sicher gemacht werden können, um miteinander zu reden. Wir haben zusammen eine kurze demo der app wir entwickeln derzeit in Rails + Ext an http://demo.domine.co.uk/admin. Ignorieren Sie die front-end jetzt, da es nicht vollständig ist - der admin-Bereich ist im wesentlichen abgeschlossen, und Sie können sich in es mit:
Benutzername: edward
Passwort: rarrar
Als die demo ist noch nicht ganz fertig, ich werde nicht garantieren, dass es korrekt funktioniert in etwas anderes als Firefox in diesem Stadium. Es gibt keinen Grund für Sie nicht zu funktionieren, in anderen Browsern, die ich nur noch nicht ausgegeben, jeder Zeit testen Sie noch. Der Punkt ist, mehr über die integration mit Schienen, obwohl.
Jede Anwendung über das start-Menü ist die Interaktion mit dem Rails-backend via JSON. Ich habe geschrieben eine einfache Rails-plugin zu tun, die meiste Arbeit für uns gibt. Ich werde loslassen der code hinter dieser kurz, aber für jetzt hoffentlich, dass einige die Vorstellung, wie gut diese beiden Technologien zusammen arbeiten können...
InformationsquelleAutor der Antwort Ed Spencer
Ich habe zwar keine Erfahrung mit ExtJS (neben Lesen über in der " Praktische Schienen-Projekte " - Buch), habe ich eine jQuery Flexigrid mit jrailsum mehr von einem desktop fühlen.
Das funktionierte ziemlich gut.
InformationsquelleAutor der Antwort Andy Jeffries
Ok. Ich benutze extjs gwt gxt auf viele Projekt, und es sehr einfach für entwickeln. Aber ich möchte Ihnen sagen, dass ich baute mein Projekt mit extjs+gwt (gxt), ich weiß nicht wissen über Ruby.
link-text
InformationsquelleAutor der Antwort