Frage

Ich bin am Anfang / Mitte eines Projektes, das wir wählten mit GWT zu implementieren. Hat jemand keine größere Gefahren im Umgang mit GWT (und GWT-EXT) festgestellt, die nicht in der Lage waren, überwunden werden? Wie wäre es aus Sicht der Leistung?

Ein paar Dinge, die wir gesehen haben / schon gehört, sind:

  • Google nicht zu indizieren Inhalt in der Lage
  • CSS und Styling im Allgemeinen scheint ein bisschen flockig zu sein

Sie suchen jedes zusätzliche Feedback zu diesen auch Gegenstände. Dank!

War es hilfreich?

Lösung

Ich werde zunächst sagen, dass ich ein massiver GWT-Fan bin, aber ja, es gibt viele Gefahren, aber die meisten, wenn nicht alle wir in der Lage waren zu überwinden:

Problem: Lange Zeit kompilieren, wie Ihr Projekt tut wächst so die Zeit, um es zu kompilieren dauert. Ich habe Berichte von 20 Minuten compiles gehört, aber meine sind im Durchschnitt etwa 1 Minute.

Lösung: Teilen Sie Ihren Code in separate Module und Ameise sagen, nur zu bauen, wenn es sich verändert hat. Auch bei der Entwicklung, können Sie massiv beschleunigen mal kompilieren, indem nur für einen Browser zu bauen. Sie können dies tun, indem Sie diese in Ihre .gwt.xml Datei setzen:

<set-property name="user.agent" value="gecko1_8" />

Wo gecko1_8 Firefox 2+, IE6 ist IE, etc.


Problem: Hosted-Modus ist sehr langsam (unter OS X zumindest) und nicht annähernd die ‚live‘ zu passenden Änderungen, die Sie erhalten, wenn Sie Dinge wie JSPs oder Rails Seiten bearbeiten und drücken Sie Refresh in Ihrem Browser.

Lösung: Sie können dem Host-Modus mehr Speicher (I für 512M im Allgemeinen bekommt), aber es ist immer noch langsam, die ich gefunden habe, wenn Sie gut genug, um mit GWT erhalten Sie diese nicht mehr verwenden. Sie machen einen großen Teil der Änderungen, dann nur für einen Browser (in der Regel 20er Jahre im Wert von Kompilierung) kompilieren und dann drücken Sie Refresh nur in Ihrem Browser.

Update: Mit GWT 2.0+ ist dies kein Problem mehr, weil Sie den neuen ‚Entwicklungsmodus‘ verwenden. Im Grunde bedeutet es Ihnen, Code direkt in Ihrem Browser der Wahl laufen kann, so dass kein Verlust an Geschwindigkeit, plus Sie können es firebug / inspizieren, etc.

http://code.google.com/p/google -Web-Toolkit / wiki / UsingOOPHM


Problem: GWT-Code ist java, und hat eine andere Mentalität eine HTML-Seite zu Auslegen, die ein HTML-Design und verwandelt sie in GWT schwieriger machen unter

Lösung: Auch hier erhalten Sie daran gewöhnt, aber leider ein HTML-Design zu einem GWT Design Umwandlung wird immer langsamer sein werde als etwas zu tun, ein HTML-Design zu einer JSP-Seite wie die Umwandlung


Problem: GWT nimmt ein wenig den Kopf herum erhalten, und ist noch nicht Mainstream. Was bedeutet, dass die meisten Entwickler, die Ihr Team oder halten Sie den Code beitreten wird es von Grund auf lernen

Lösung: Es bleibt abzuwarten, ob GWT weg nehmen, aber wenn Sie ein Unternehmen in der Steuerung sind, die Sie mieten, dann können Sie immer Leute wählen, die entweder wissen, GWT oder wollen lernt es.


Problem: GWT ist ein Vorschlaghammer im Vergleich zu so etwas wie jQuery oder einfach nur Javascript. Es braucht viel mehr Setup es passiert zu bekommen als nur eine JS-Datei enthält.

Lösung: Verwenden Bibliotheken wie jQuery für kleinere, einfache Aufgaben, die die geeignet sind. Verwenden Sie GWT, wenn man etwas wirklich Komplex in AJAX aufbauen will, oder wenn Sie benötigen, um Ihre Daten hin und her über den RPC-Mechanismus zu übergeben.


Problem: Manchmal, um Ihre GWT Seite zu füllen, müssen Sie einen Server Anruf tätigen, wenn die Seite geladen wird. Es kann ärgerlich sein, dass der Benutzer dort zu sitzen und ein Ladesymbol sehen, während Sie die Daten holen Sie benötigen.

Lösung: Im Falle einer JSP-Seite wurde die Seite bereits vom Server gerendert, bevor HTML werden, so können Sie tatsächlich machen alle Ihre GWT dann Anrufe und Vorbelastung sie auf die Seite, für eine sofortige Belastung. Sehen Sie hier für weitere Details:

beschleunigen Seite Loading von Pre-Serialisierung GWT ruft


Ich habe nie irgendwelche CSS Probleme meine Widgets Styling, aus dem Kasten heraus, kundenspezifische oder anderweitig, also weiß ich nicht, was Sie von diesem Wesen eine Gefahr bedeuten?

Was die Leistung, habe ich festgestellt, dass immer einmal kompiliert GWT-Code ist schnell, und AJAX Anrufefast immer kleiner als eine ganze Seite zu aktualisieren zu tun, aber das ist nicht wirklich einzigartig für GWT, obwohl die einheimischen RPC-Pakete, die Sie erhalten, wenn Sie eine JAVA-Backend verwenden ziemlich kompakt sind.

Andere Tipps

Wir haben mit gwt arbeiten fast 2 Jahren. Wir haben viele Lektionen gelernt. Hier ist, was wir denken:

  1. Dont Dritte Widget-Bibliotheken besonders GWT-ext. Es wird Ihre Debugging, Entwicklung und Laufzeit-Performance töten. Wenn Sie Fragen zu haben, wie dies geschieht, kontaktieren Sie mich direkt an.

  2. Mit GWT nur in den dynamischen Teilen Ihrer Anwendungen zu füllen. Also, wenn Sie einige komplexe Benutzer-Interaktionen mit vielen Feldern haben. Verwenden Sie jedoch nicht die Platten, die mit ihm gekommen. Nehmen Sie Ihre vorhandenen Bestand Designer geliefert Seiten. Carve die Bereiche aus, die die Kontrollen für Ihre App enthalten. Bringen Sie diese Steuerelemente auf die Seite innerhalb onModuleLoad (). Auf diese Weise kann die Standardseiten von Ihrem Designer verwenden kann und auch außerhalb der GWT.

  3. alle Styling tun
  4. Sie die gesamte App als eine Standardseite nicht bauen, die dann alle Teile dynamisch aufbaut. Wenn Sie das tun, was ich schlage vor, in Artikel 2, wird dies nicht sowieso passieren. Wenn Sie alles bauen dynamisch werden Sie töten Leistung und große Mengen an Speicher für mittlere bis große Anwendungen verbrauchen. Auch, wenn Sie das tun, was ich vorschlage, wird die Zurück-Taste große arbeiten, werden so die Indizierung durch Suchmaschinen etc.

Die anderen commen auch einige gute Vorschläge hatte. Als Faustregel ich verwende, ist Seiten zu erstellen, wie Sie eine Standard-Web-Seite tun wurden. Dann die Stücke schnitzen, die dynamisch sein müssen. Ersetzen Sie sie mit Elementen, die IDs und dann verwenden RootPanel.get( id ).add( widget ) in jene Bereiche zu füllen.

Pitfalls, die wir ausgeführt haben in:

  • Während Sie eine Menge Kilometer von mit so etwas wie GWT EXT bekommen können, jederzeit Sie diese Art von dünner Firnis verwenden auf einer JavaScript-Bibliothek, verlieren Sie die Möglichkeit, zu debuggen. Mehr als einmal habe ich heftig geschlagen habe meinen Kopf auf dem Schreibtisch, weil ich nicht (in meiner IntelliJ Debugger) überprüfen kann, was in der GWT EXT Tabellenklasse geschieht ... Alles, was Sie sehen können, ist, dass es ein JavaScriptObject ist. Dies macht es ziemlich schwierig, herauszufinden, was schief gegangen ist ...

  • Nicht jemand in Ihrem Team haben, der CSS kennt. Aus meiner Erfahrung, spielte keine Rolle, dass die Person nicht Experte war ... es ist genug, dass er einige gute Kenntnisse hat, und kennt die richtigen Begriffe, wenn sie Google erforderlich.

  • Debuggen in allen Browsern. Halten Sie ein Auge auf Out of Process Hosted Mode [ 1 ] [ 2 ] [ 3 ], kommt hoffentlich in GWT 1.6 ... Denn jetzt müssen Sie nur Dinge mit gehosteten Modus gut erhalten, verwenden Sie dann den „Compile / Browse“ klicken, in dem Sie mit anderen Browsern spielen können. Für mich arbeitet unter Windows, bedeutet dies, kann ich meine Arbeit in FireFox, und verwenden Sie Firebug zu helfen, zwicken und die Dinge besser machen.

  • ansehen
  • IE6. Es ist erstaunlich, wie unterschiedlich IE 6 Dinge machen wird. Ich habe den Ansatz der Anwendung einen Stils auf das äußerste „Ansichtsfenster“ genommen nach dem Browser so, dass ich CSS-Regeln wie haben:

    .my-style { /* stuff that works most everywhere */ }
    
    .msie6 .my-style { /* "override" so that styles work on IE 6 */ }
    

Schließlich, stellen Sie sicher, dass Sie einen Editor verwenden, das Ihnen hilft. Ich benutze IntelliJ - es hat viele GWT Smarts. Wenn ich zum Beispiel versuchen, eine Klasse zu verwenden, die nicht von der JRE-Emulation gehandhabt wird, läßt es mich wissen; wenn ich einen Stil für ein Widget angeben, und ich habe nicht diesen Stil noch nicht definiert, wird der Code der kleine rote Wellen ... Oder, wenn sie bei der CSS sucht, wird es mir sagen, wenn ich widersprüchliche Attribute in eine angegeben haben einzelne Regel. (Ich habe es noch nicht ausprobiert, aber ich verstehe, dass Version 8 hat noch bessere GWT-Unterstützung, wie hält die „local“ und „Asynchron“ RPC-Schnittstellen und Implementierungen in sync.)

GWT 2.0, die in den nächsten Monaten irgendwann herauskommen soll, löst viele der diskutierten Themen.

  • Erstellen Sie Layouts eine HTML / XML-ähnliche Syntax mit
  • Dynamische Script Laden - nur das wesentliche JS zunächst heruntergeladen werden. Der Rest wird je nach Bedarf heruntergeladen werden
  • In-Browser-Modus Hosted - Diese Pflege diskutiert der gehosteten Modus Geschwindigkeitsprobleme nehmen könnte, neben anderen Vorteilen
  • "Compiler-Optimierungen" - Schnellere Kompilation, hoffentlich

GWT 2.0 Preview Video bei Google I / O

Nicht „nicht in der Lage zu überwinden“, aber ein bisschen wie ein Schmerz für etwas Grundsätzliches.

Datum Handhabung:

GWT verwendet den deprecated java.util.Date die zu unerwartetem Verhalten führen kann, wenn mit Daten auf der Client-Seite handelt. java.util.Calendar wird nicht von GWT unterstützt. Mehr Infos hier .

Verwandte Problem Beispiele:

Ich werde ein paar Punkte zu denen hinzufügen bereits erwähnt:

  • Databinding / Validierung. GWT nicht über eine Datenbindung / Validierungsunterstützung aus dem Kasten heraus, obwohl es einige Projekte auf diesem Gebiet entstehen zu starten. Sie werden sich eine Menge dieses Fundes zu schreiben:
TextField fname, faddress;
...
fname.setText(person.getName());
faddress.setText(person.getAddress());
...
  • Lazy Loading. Da gwt auf der Client-Seite ist, ist ein träges Laden wirklich keine Option. Sie werden Ihre RPCs und Domain-Objekte sorgfältig, um entwerfen müssen zu
    • Bitte senden Sie alle Ihre Objektdaten, die erforderlich ist
    • vermeiden begierig alle Ihre Daten zu holen
    • Sie werden auch dafür zu sorgen, dass Sie nicht Proxies / nicht serialisierbare Objekte senden. hibernate4gwt können Sie mit diesen Punkten helfen.
  • UI-Design. Es ist schwieriger, eine Benutzeroberfläche in Java (Panels, Buttons, etc.) sichtbar zu machen als in html.
  • Geschichte Unterstützung. GWT nicht mit einem History-Subsystem, Schiff noch für schönen Urls oder zustandsbehaftete bookmarking mit jedem Subsystem nicht versenden. Sie werden Ihre eigene Rolle müssen (obwohl es Unterstützung für Geschichte Token hat, das ist ein Anfang). Dies geschieht mit allen AJAX Toolkits AFAIK.

IMHO, GWT fehlt ein Rahmen, der für alle Fragen zu diesem ‚Faden‘ erwähnt aus der Box-Unterstützung.

Ich arbeite jetzt an einem Projekt, dass verwendet EXT GWT (GXT) nicht mit GWT EXT verwechselt werden. Es gibt einen Unterschied, EXT GWT derjenige ist, der tatsächlich von der Firma hergestellt wird, dass die Javascript-Bibliothek ExtJS schrieb. GWT EXT ist ein GWT-Wrapper um die ExtJS-Bibliothek. GXT stammt GWT.

Wie auch immer, GXT ist immer noch etwas unreif und es fehlt eine solide Gemeinschaft, die ich fühle mich GWT EXT hat. Allerdings ist die Zukunft mit GXT, wie es nativer GWT ist und tatsächlich von der Firma entwickelt, die ExtJS gemacht. GWT EXT ist etwas gelähmt wie die Lizenz auf der ExtJS Bibliothek geändert, so dass die Entwicklung von GWT EXT verlangsamt wird.

Insgesamt denke ich, GWT / GXT eine gute Lösung ist eine Web-Anwendung zu entwickeln. Ich eigentlich ganz wie Host-Modus für die Entwicklung, macht es die Dinge schnell und einfach. Sie erhalten auch den Vorteil der Lage zu sein, als auch den Code zu debuggen. Einheit testings mit JUnit ist ziemlich als auch solide. Ich habe noch nicht eine große JavaScript Unit Testing Framework gesehen, dass ich zum Testen einer Unternehmensanwendung reif genug fühlte.

Für weitere Informationen über GWT EXT: http://gwt-ext.com/

Für weitere Informationen über EXT GWT (GXT): http://extjs.com/products/gxt/

Es wurden keine großen Gefahren, die ich nicht so leicht überwinden konnten. Verwenden gehostet stark Modus. Wie Sie GWT-ext verwenden, werden Sie fast nie CSS selbst berühren müssen, wenn Sie die aus dem Kasten heraus Blick optimieren wollen.

Meine Empfehlung ist eine GWT „native“ Widget über eine Bibliothek zu verwenden, ein, wo sie in den Eigenschaften der Nähe sind.

Re Indizierung durch Suchmaschinen: ja die Website schiffbaren URLs normalerweise nicht (es sei denn Sie nur Widgets Elemente einer regulären Website Zugabe werden). Sie können allerdings die Geschichte vor / zurück-Funktionalität tun.

Ich benutzen GWT und GWT-ext gemeinsam an einem Projekt vor einer Weile. Ich fand die Erfahrung sehr glatt wie Web-Entwicklung geht, aber mein Rat wäre dies:

Mischen Sie nicht GWT nativen Widgets mit EXT-Widgets. Es ist verwirrend wie die Hölle, da in der Regel die Namen sind die gleichen (GWT.Button oder GWText.Button?)

Eine Sache, die mir passiert ist, dass wirklich der Code komplizierter gemacht als ich möchte, war, dass ich ein Panel wollte, das war a) dynamisch aktualisierbare b) kaskadierbar

GWT nativen Platten sind dynamisch, Ext Platten kaskadierbar sind. Lösung? Ein GWT.VerticalPanel Umwickeln eines GWTExt-Panel ... Chaos. :)

Aber hey, es funktioniert. ;)

Ich schließe mich der Kommentar von ykagano, der größte Nachteil des V in MVC verliert. Obwohl Sie die wahre ui-Klasse aus dem Rest Ihres Client-Seite Code trennen kann, kann man nicht einfach eine HTML-Seite von einer Grafik / Web-Designer generierte verwenden. Das heißt, Sie brauchen einen Entwickler HTML-Code in Java zu übersetzen.

Hier finden Sie eine WYSIWYG-Editor ui, es wird Ihnen viel Zeit sparen. Ich benutze GWTDesigner.

Der größte Kopf von GWT ist die Möglichkeit, über Cross-Browser-Probleme zu vergessen. Es ist nicht 100%, sondern nimmt fast alles, was Schmerz weg. In Kombination mit dem Vorteil von gehosteten Mode-Debugging (im Gegensatz zu Firebug Gegensatz, das ist ausgezeichnet, aber nicht das gleiche wie ein Java-Debugger) es gibt dem Entwickler einen großen Vorteil bei der Erzeugung von komplexen Ajax-Anwendungen.

Oh und seine schnell zur Laufzeit, vor allem, wenn Sie einen gzip-Filter verwendet werden.

Ein wenig Off-Topic, aber der #gwt Kanal auf irc ist sehr hilfreich, im Fall, dass Sie haben ein hartnäckiges Problem.

GWT ist ziemlich geradlinig und intuitiv.

Vor allem mit der Veröffentlichung von UiBinder zu GWT Widgets erlaubt in XML wird angelegt und dann codierte Hinterher in Java.

Wenn Sie also andere Ajax oder Flash-Design-Tools verwendet haben, oder Silverlight, etc, GWT ist sehr einfach zu erlernen.

Die große Hürde, wenn nicht pitfall ist GWT RPC. Der eigentliche Grund Sie wollen GWT verwenden, weil der GWT async RPC. Warum sonst einfach nicht auf CSS verlassen Ihre Seite zu formatieren?

GWT RPC ist das Element, das den Server, ohne dass aktualisieren Sie die Seite aktualisieren Daten auf dem Server ermöglicht. Dies ist eine absolute Voraussetzung für Seiten wie Aktien Performance Monitoring (oder die aktuelle nationale und die öffentliche Verschuldung der USA oder die Anzahl der Ungeborenen durch die zweite abgebrochen weltweit).

GWT RPC dauert einige Mühe zu verstehen, aber ein paar Stunden gegeben, sollte es kommen alle klar.

Vor, dass nach in einigem Aufwand setzen GWT RPC zu lernen, entdecken Sie endlich, dass Sie nicht JSPs als Servicekomponente für RPC verwenden können, es sei denn ... Ich habe einen 8 Teil (glaube ich) Serie auf meinem Blog darüber, wie JSP als GWT RPC Servicer zu verwenden. da Sie nach Antworten jedoch nicht gefragt hatten, aber nur Probleme, die ich von Werbung für mein Blog abstehen soll.

So. Ich glaube sehr, dass die schlimmsten Hindernisse / Fallen zu GWT verwenden sind, herauszufinden, wie man richtig GWT Asynchron-RPC implementieren und wie ermöglichen es JSP Servicer zu verwenden.

Wir haben eine sehr harte Zeit zu heiraten unsere GWT Codebasis mit HTML-Web-Templates haben, die wir von ein Web-Designern (statische HTML-Seiten mit bestimmtem div-IDs, die wir GWT wollten verwalten) bekamen. Zumindest als wir es verwendet wird, können wir nicht GWT mit Teilen unserer Website zu integrieren, die nicht in GWT codiert wurden. Wir hatten es schließlich arbeiten, aber es war ein großer Hack.

  • Die Async-Schnittstelle können Sie für jede Service-Schnittstelle sieht aus wie etwas zu schreiben, die automatisch vom GWT-Compiler erzeugt worden sein könnten.
  • Übersetzen Zeiten für große Projekte lang werden

Aber für ein großes Javascript-Projekt ist es die beste Wahl

GWT 2.4 hat viele der oben genannten Probleme behoben und eine große Widget-Bibliothek kommt gerade aus der Beta (Ext GWT 3.0.4 aka GXT), die vollständig in GWT geschrieben ist, nicht ein Wrapper eines JS lib.

Restschmerzen:

  • Mangel an CSS3-Selektor-Unterstützung können Sie „wörtliche ()“ in einigen Fällen zu umgehen, verwenden.
  • Der Mangel an Unterstützung für CSS3 und modernen Browser Veranstaltungen wie transitionEnd .
  • Mangel an Java Calendar-Klasse-Unterstützung (viele Jahre später).
  • Mangel an JUnit4 Unterstützung (5 Jahre und Zählen).
  • Der Mangel an klaren Fahrplan und Release-Zeitplan von Google GWT-Team.

In Bezug auf GWT 2.4, Verwenden Sie Firefox , wenn das Debuggen GWT, es viel mehr schneller als Chrom verwendet wird. Und wenn Sie nur firefox verwenden, sollten Sie diese Zeile setzen in der project.gwt.xml Datei

<set-property name="user.agent" value="gecko1_8" />

Auch wenn Sie Eclipse verwenden, dann fügen Sie die folgenden Argumente unter -> VM Argumente:

-Xmx512m -XX: MaxPermSize = 1024m -XX: PermSize = 1024m

Sie können Ihren Server und Client teilen, und verwenden Sie die folgende unter Argumente -> Programm Argumente: -codeServerPort 9997 -startupUrl http: // IhrServer / Projekt -noserver

Auch zu verhindern, dass der Server bei jeder Änderung erfrischend, verwenden JRebel http: // zeroturnaround. com / blog / how-to-Rock-out-mit-JRebel-and-google-Web-Toolkit-gwt / Und hier ist eine Live-Demo http://www.youtube.com/watch?feature=player_embedded&v=4JGGFCzspaY

Eine große Gefahr ist, dass manchmal müssen Sie explizit eine ID zugewiesen werden, was letztlich wird ein HTML-Element bestimmte CSS-Stile verwenden zu können. Zum Beispiel: ein GWT TabPanel nur tun: über tabBarItems schweben, wenn die tabBar des TabPanel wurde eine ID zugewiesen und Sie angeben. Schweben auf, dass elementId

Ich schrieb über einige andere Nachteile von GWT anderswo, aber sie sind bereits von rustyshelfs bedeckt beantworten:)

.

Ich habe eine Menge Arbeit auf GWT vor kurzem getan, und das ist wht i sagen:

  1. CSS Styling nur manchmal schwierig ist, herauszufinden, IE Entwickler-Tool in IE und Firebug in Firefox verwenden, was genau passiert ist und Sie eine klare Vorstellung von dem, was CSS geändert werden muss
  2. erhalten
  3. Sie können Tricks verwenden, um Index zu erhalten Google. Eine sehr bekannte Website http://examples.roughian.com/ ihre Bewertungen bei Google überprüfen. Eine weit weniger bekannte Seite ist www.salvin.in (könnte nicht widerstehen, das erwähnen), optimiert ich es Worte : salvin Homepage (google-Suche für diese drei Wörter)

Ich weiß nicht viel über die GWT-EXT, aber ich bin zu der Überzeugung, dass es keine Notwendigkeit, Third-Party-Bibliotheken enthalten ist.

Viel Glück auf Ihrer Entscheidung:)

Das GWT-Team eine Menge großer Verbesserungen in zum letzten Jahr der Freigabe GWT 2.7. Eine große Schwäche der GWT war, dass Kompilierung zu viel Zeit in GWT nimmt 2,6 und darunter. Dies ist jetzt weg GWT hat nicht inkrementale Kompilierung, die ist super schnell und kompiliert nur die Änderungen.

GWT 2.7 jetzt hat ( Quelle ):

  • Incremental baut nun nur wenige Sekunden
  • Kompaktere, genaue SourceMaps
  • GSS Unterstützung
  • JSInterop
  • Große JavaScript-Performance
  • kleinere Codegröße

Pitfalls Ich lief in 1. Verschiedene Verhalten in superdev Modus. Z.B. Someclass.class.getName () funktioniert absolut in Superdev Modus fein und gibt den vollständig qualifizierten Namen der Klasse. Im Produktivmodus funktioniert das nicht.

  1. addWidget (Widget) wird widget removefromparent () aufrufen

GWT ist ein Technologie-Meisterwerk. Sie vereint Client- und Server-Programmierung ihm eine kohärente Anwendung zu machen - die Art und Weise Software geschrieben wurde, bevor „Layering“, und die Art, wie es geschrieben werden soll. Es beseitigt verschiedene Fähigkeiten-Sets, Fehlkommunikation zwischen den Teammitgliedern, und in der Regel die gesamte Web-Design-Phase: sowohl die künstlerischen und Programmierung. Und es ist die nächstgelegene Sie zu Handy zum Beispiel bekommen Android Entwicklung. In der Tat wurde GWT verschiedene einheimische UIs zu erzeugen entworfen, nicht nur HTML. Obwohl es enorme Disziplin erfordert eine solche Entkopplung zu gewährleisten -., Um Ihre inneren Schichten Präsentation unabhängig

Der erste Fehler, die Sie vermeiden sollten, die mir vier Jahre dauerte, zu realisieren, wird Erweiterungen von Drittanbietern wie EXT-GWT aka GXT und SmartGWT verwenden. Es ist sehr verlockend, zu beginnen, ihre ziemlich desktopish Widgets verwenden, anstatt in Ihrem eigenen Design zu investieren, aber ich kann nicht sagen, wie viele Probleme, die ich mit SmartGWT hatte, bis ich endlich satt. Kurz gesagt friert es den Kern GWT-Feature am bestimmten (ziemlich veraltet) Pegel eingestellt und dann baut auf ihm. Denken Sie auch daran, dass Desktop-Look gemeißelt und das Gefühl sieht albern heute nicht die träge Performance, Tonnen von Bugs zu erwähnen, und Kompatibilitätsfunktionen - vor allem auf mobilen Geräten. Sie wollen so nah an den nativen Browser steuert, wie möglich das heißt Dropdown-Listen als native

scroll top