理解Vaadin如何使用GWT

9

玩了大约一周的Vaadin后,我对Vaadin如何使用GWT感到好奇。GWT将Java代码编译为JavaScript。每次重新部署时都必须这样做。

由于Vaadin必须被理解为一个服务器中心的框架,消除了您在编写在客户端执行的代码方面的灵活性,并将所有内容移动到服务器(这听起来比实际情况要糟糕),因此GWT编译器只运行一次。例如,当您从vaadin网站导入插件时会发生这种情况。

但是肯定不会这么简单吧?如果它只会将插件的代码编译为JavaScript,那么以前就可以完成了。

所以,我的问题是:

VAADIN什么时候使用GWT编译器,在那个时候它除了编译成js还做了什么?

1个回答

14

基本上你说得没错,并且大部分问题都已经自己回答了。

Vaadin中的用户界面组件由两部分组成:

  1. 使用JDK编译的服务器端"组件"
  2. 使用GWT编译的客户端"小部件"

这些部分通过HTTP相互通信,并在需要时自动同步它们的状态。服务器端部分维护用户界面组件的状态,客户端小部件呈现该状态。

应用程序开发人员通常只使用服务器端组件来构建应用程序,不需要关心客户端如何工作。

一般来说,可以使用两种方法开发Vaadin的新组件:

  1. 组合现有组件
  2. 使用GWT / JavaScript(+其他客户端技术)创建新的小部件

这里的第一种方法使用现有类,无需重新使用GWT编译小部件。只有应用程序代码被编译(使用JDK编译器)。但是,在第二种情况下,客户端类会发生更改并需要重新编译。这就是需要GWT编译器的时候。

由于GWT编译的JavaScript具有相当单块的特性(尽管GWT的新代码拆分功能名称空间是全局的),因此Vaadin使用小部件集合的概念。这是一个GWT模块,其中包含应用程序中所需的所有小部件。这意味着向应用程序添加新的(客户端)小部件需要进行GWT重新编译。另外,为了优化小部件集大小,重新编译小部件集也是一个好习惯。

GWT编译步骤本身并没有什么特别之处。但是,Vaadin本身包含了许多对GWT类的补充、帮助和解决方法,这些都是由小部件应用和使用的。

当使用Vaadin的add-ons时,所有这些都是相当明显的(请参见http://vaadin.com/directory)。即使add-on只是简单的jar文件,如果它们包含新的客户端小部件代码,那么在将它们添加到项目中时需要使用GWT重新编译小部件集。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接