Nachdem ich ungefähr eine Woche mit Vaadin herumgespielt habe, bin ich gespannt, wie Vaadin GWT benutzt. GWT kompiliert Javacode zu Javascript. Dies muss jedes Mal durchgeführt werden, wenn Sie eine Neuverteilung durchführen.
Da Vaadin als ein serverzentriertes Framework zu verstehen ist, wird die Flexibilität beim Schreiben von Code, der auf der Clientseite ausgeführt wird und alles auf den Server verlagert wird (was schlimmer klingt als es tatsächlich ist), der GWT Compiler nur einmal ausgeführt Zeit. Dies passiert zum Beispiel, wenn Sie ein Plugin von der vaadin-Website importieren.
Aber es kann nicht so einfach sein, oder? Wenn es nur den Code der Plugins zu Javascript kompilieren würde, könnte dies vorher getan haben.
Also, meine Frage ist:
Wann verwendet VAADIN den GWT Compiler und was macht er an diesem Punkt anders als das Kompilieren mit js?
Grundsätzlich haben Sie es richtig, und meist beantwortet die Frage selbst.
In Vaadin bestehen die Benutzeroberflächenkomponenten aus zwei Teilen:
Diese Teile kommunizieren über HTTP miteinander und synchronisieren ihren Status automatisch nach Bedarf. Der serverseitige Teil verwaltet den Status der Benutzeroberflächenkomponente und das clientseitige Widget rendert diesen Status.
Anwendungsentwickler verwenden normalerweise nur die serverseitigen Komponenten, um die Anwendung zu erstellen, und sie müssen sich nicht wirklich darum kümmern, wie die Client-Seite funktioniert.
Im Allgemeinen können neue Komponenten für Vaadin auf zwei Arten entwickelt werden:
Die erste Methode verwendet hier die vorhandenen Klassen und benötigt keine Neukompilierung der Widgets mit GWT. Nur der Anwendungscode wird kompiliert (mit JDK-Compiler). Im zweiten Szenario ändern sich jedoch die clientseitigen Klassen und müssen neu kompiliert werden. Dies ist, wenn der GWT-Compiler benötigt wird.
Aufgrund der eher monolithischen Natur des GWT-kompilierten JavaScript (unabhängig von den neuen Code-Splitting-Features von GWT ist der Namensraum global) verwendet Vaadin das Konzept des Widget-Sets . Das ist ein GWT-Modul, das alle Widgets enthält, die in der Anwendung benötigt werden. Das bedeutet, dass zum Hinzufügen neuer (clientseitiger) Widgets zu einer Anwendung eine GWT-Neukompilierung erforderlich ist. Es empfiehlt sich außerdem, den Widget-Satz beim Entfernen von Widgets neu zu kompilieren, um die Größe des Widget-Sets zu optimieren.
Der GWT-Übersetzungsschritt selbst ist nichts besonderes. Vaadin selbst enthält jedoch viele Zusätze, Helfer und eine Problemumgehung für GWT-Klassen, die von den Widgets angewendet und verwendet werden.
All dies ist bei der Verwendung von Vaadin-Add-Ons deutlich sichtbar (siehe Ссылка ). Selbst Add-ons sind einfach JAR-Dateien. Wenn sie einen neuen clientseitigen Widget-Code enthalten, wird die Widget-Set-Kompilierung mit GWT benötigt, wenn sie einem Projekt hinzugefügt werden.