了解 Vaadin 如何使用 GWT

2023-11-26

在使用 Vaadin 大约一周后,我很好奇 Vaadin 如何使用 GWT。 GWT 将 Javacode 编译为 Javascript。每次重新部署时都必须执行此操作。

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

但这不可能那么容易,对吧?如果它只是将插件代码编译为 javascript,那么这在以前就可以完成。

所以,我的问题是:

VAADIN 什么时候使用 GWT 编译器?此时除了编译为 js 之外它还能做什么?


基本上你说得对,而且大部分都是你自己回答的。

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

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

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

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

一般来说,Vaadin 的新组件可以通过两种方式开发:

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

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

由于 GWT 编译的 JavaScript 具有相当单一的性质(无论 GWT 的新代码分割功能如何,命名空间都是全局的)Vaadin 使用的概念小部件集。这是一个 GWT 模块,包含应用程序中所需的所有小部件。这意味着向应用程序添加新的(客户端)小部件需要 GWT 重新编译。在删除小部件时重新编译小部件集以优化小部件集大小也是一个很好的做法。

GWT 编译步骤本身并没有什么特别的。然而,Vaadin 本身包含许多由小部件应用和使用的 GWT 类的附加内容、帮助程序和解决方法。

当使用 Vaadin 附加组件时,所有这些都非常明显(参见http://vaadin.com/directory)。即使附加组件只是 jar 文件,如果它们包含新的客户端小部件代码,则在将它们添加到项目中时,需要使用 GWT 进行小部件集编译。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Vaadin 如何使用 GWT 的相关文章

  • 带有编辑器框架的 GWT 验证器

    有没有人意识到编辑器和 jsr 303 验证如何与 GWT 2 3 一起工作 未来 验证 API 已添加到 gwt sdk 但我无法使用编辑器框架验证实体 无论 我确实从来没有从客户端或服务器端抛出错误 这是一个代码片段 public cl
  • Vaadin 7.0.1 带有 JPAContainer 和 FieldGroup 的组合框

    抱歉 如果这是一个新问题 我有两个 JPAContainer 一个用于 Employee 类 表 一个用于语言类 表 员工可以选择一种语言 我正在尝试创建一个员工编辑表单 其中包含用于语言选择的组合框和用于处理绑定和创建的 FieldGro
  • android可以在本机模式下从sd卡加载dll吗

    我想把我写的程序移植到android上 该程序是在 Windows 和 Linux 上用 C 编写的 该程序使用 dll 作为插件架构 通过下载程序从特定文件夹加载的 dll 可以将新插件添加到程序中 我的问题是 是否可以将为 androi
  • 如何向 CellList 添加或删除单个元素?

    如何添加 删除单个元素CellList http google web toolkit googlecode com svn javadoc 2 1 com google gwt user cellview client CellList
  • 什么插件/工作台框架是 Eclipse RCP 的最佳 .NET 替代品?

    我正在寻找一个与 Eclipse 插件框架相当的基于插件的应用程序框架 在我看来 它包括 a core 插件管理框架 Equinox OSGI 它提供了声明扩展端点 然后发现并加载为这些端点提供服务的插件的能力 这与依赖注入不同 但不可否认
  • GWT 和身份验证

    保护 GWT Tomcat 应用程序执行身份验证和授权的最佳策略是什么 有两种基本策略 确保入口点安全 确保远程服务的安全 确保入口点安全 最简单的方法是使用常规 Web 应用程序安全工具限制对 GWT 生成的 html js 文件的访问
  • 无法在 Vaadin Maven 项目上运行 mvn vaadin:compile

    当我运行命令 mvn vaadin compile 时出现此错误 INFO BUILD FAILURE INFO INFO Total time 1 039s INFO Finished at Thu Mar 20 11 35 00 CET
  • GWT SafeHTML、XSS 和最佳实践

    OWASP 的优秀人员强调 您必须对 HTML 文档中要放入不受信任数据的部分 正文 属性 JavaScript CSS 或 URL 使用转义语法 看OWASP XSS https www owasp org index php XSS 2
  • GWT 和 Guava 的问题

    我很难让 GWT 与 Guava 一起工作 我添加了guava r09 gwt jar到我的类路径 并且
  • 是否有一个“AcceptsOneWidget”也“ProvidesResze”(除了“ScrollPanel”)?

    我有一个复合材料可以扩展ResizeComposite并有一个DockLayoutPanel作为它的根 我可以直接贴进去RootLayoutPanel它之所以有效是因为DockLayoutPanel ProvidesResize 但是 我想
  • 将依赖项添加到自定义 gradle 插件

    我正在创建一个使用 gson 的 gradle 插件 但是当我在客户端使用该插件时 它会抛出此错误java lang NoClassDefFoundError com google gson Gson我希望我以错误的方式链接插件中的依赖项
  • Maven 配置文件 - 如何为父级运行插件一次,为模块运行多次?

    我对詹金斯的输出有点困惑 Jenkins 上的工作 底部缩短了 pom xml mvn deploy Pprofile1 我的所有插件都会运行 4 次 父 pom xml 父 module1 pom xml 父 module2 pom xm
  • 想要在 GWT 单元列表中实现“标记为已读”功能

    我想实施这个单元格列表的例子 http gwt googleusercontent com samples Showcase Showcase html CwCellList经过一处修改 我想在有人点击后将每一行设置为灰色 它应该保留在那里
  • 负载测试vaadin 7.0.4返回错误No UIProvider

    我想对 5000 个用户的 vaadin 应用程序进行负载测试 我找到了这个https vaadin com wiki wiki Main JMeter 20Testing https vaadin com wiki wiki Main J
  • XcodeColors 在 XCode 5 中不起作用

    我尝试安装XcodeColors在 XCode 5 中 但不幸的是 它不能与我从 XCode 4 6 获得的旧插件一起使用 下一步 我检查了 github 网站 在那里我看到了以下拉取请求 提供了 XCode 5 的工作版本 https g
  • Javascript图像编辑插件

    在哪里可以找到 Javascript 或 jQuery 图像编辑器插件 用户可以单击图像进行编辑 并且该插件允许他们进行裁剪 调整大小 旋转 翻转等 Pixastic http pixastic com lib 不再活跃 和CamanJS
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 任何插件安装失败 - 无法复制文件错误

    每次我安装一个新的 WordPress 插件时 它都会说无法复制文件和文件地址 有谁知道为什么会这样 我遇到了同样的问题 但就我而言 我是使用 FTP 进行更新 我通过将主机名设置为 localhost 而不是使用 IP 来修复此问题 这是
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法

随机推荐

  • 在 JSP 中自动装配 Spring Beans 最简洁的方法是什么?

    我们目前正在向旧的 Web 应用程序添加一些新功能 该应用程序仅使用 JSP 没有任何前端框架 我们最近添加了 Spring 并且希望在修改后的 JSP 中自动装配 Bean 同时不重写所有内容以使用 SpringMVC Struts2 或
  • 如何在 Angular2 中使用/包含 Fabricjs

    我想在我的项目中使用fabricjs 我使用 Bower 安装了 Fabricjs 并链接到了 index html 中 但它不起作用 请看下面的代码 索引 html
  • 在哪里调用base.WndProc()或base.DefWndProc()?

    我有一些关于重写 Windows 窗体 NativeWindow 的 WndProc 方法的问题 WndProc 和 DefWndProc 之间到底有什么区别 编辑 我之前以为它被称为 DefaultWndProc 我只能重写 WndPro
  • 如何将一个数近似到小数点后n位?

    我已经开始使用maxima就在几周前 实际上我刚刚使用过几次 wxMaximaOS X 的界面 我试图在网上找到这个问题的解决方案 但也许是因为我瞎了 或者可能是因为我在maxima官方文档中搜索的经验不多 所以我还没有找到具体的解决方案
  • Jenkins Git 管道中未设置环境变量

    我正在尝试读取 Jenkins 管道脚本中的一些环境变量 这些变量应该由 Git 插件设置 但似乎它们没有设置 因为当我尝试在脚本中使用时 它的值是空字符串 而且如果我使用 sh printenv 我可以看到它们没有设置 可能我错过了一些东
  • heightForRowAtIndexPath 用于更长的 NSString

    我有一个UITableView 分组 并且需要计算两种样式单元格的高度 UITableViewCellStyleDefault and UITableViewCellStyleValue2 我就是这样做的UITableViewCellSty
  • 如何使环境变量作为python sdk中的环境变量到达Dataflow工作人员

    我用 python sdk 编写自定义接收器 我尝试将数据存储到AWS S3 要连接 S3 需要一些凭据 密钥 但出于安全原因 最好在代码中设置 我想让环境变量作为环境变量到达数据流工作人员 我该怎么做 一般来说 为了向您不想硬编码的工作人
  • 在Python中计算日期是开始、未来还是现在

    我有两个日期 时间字符串 start date 10 2 2010 8 00 00 end date 10 2 2010 8 59 00 我需要编写一个函数来计算该事件是在未来 过去还是现在正在发生 我已经阅读了相当多的文档 但发现很难让它
  • javascript readAsArrayBuffer 返回空数组缓冲区

    我正在尝试使用 FileReader readAsArrayBuffer 属性读取本地文件 读取成功 在 onload 回调中 我在 reader result 中看到数组缓冲区对象 但数组缓冲区只是空的 设置了长度 但未设置数据 我如何获
  • Android 如何从 firebase 数据库中删除值?

    这是我在 firebase 中的第一个项目 我试图从 firebase 中删除值 但是当我尝试从 firebase 中删除值时 我的应用程序崩溃了 我不明白如何解决这个错误 服务等级 public class NotiListener ex
  • 如何打印一位?

    请告诉我如何打印一点 例如printf d bit 如果 bit 只是一个 int 其中包含最低有效位中所需的值 则 printf d bit 0x1 应该这样做 正在对仅设置了第一个有效位的数字进行二进制与 因此您将删除整数中的所有其余位
  • AngularJS ui-router: reload:true 也会重新加载父状态

    在这嘭嘭嘭你有两个 ui router 状态 一个父状态和一个子状态 当通过单击链接调用子项时 因为它有选项reload true它总是被重新加载 这很好 但问题是父状态也会重新加载 尝试多次单击 填充 11 链接 您将看到父时间戳也发生了
  • 如何使用 pandas 将多行合并为一行[重复]

    这个问题在这里已经有答案了 我需要将多行组合成一行 这将是简单的空格连接 View of my dataframe tempx value 0 picture1 1 5 1 picture555 1 5 2 picture255 1 5 3
  • 从多单元格区域获取格式化值

    Dim myText As String myText Range a3 Text 返回单元格 A3 中的格式化值 但是 myText Range a3 c7 Text 给我一个错误 如何从多单元格区域获取表示格式化值的字符串 同时保留数字
  • 空嵌套元组错误

    include
  • 更改 Google 地图信息窗口中的背景颜色

    我希望 Google 地图实现中的 InfoWindows 具有黑色背景颜色 InfoWindows 没有 backgroundColor 选项 See here 我在内容选项中放置了一个黑色背景和白色文本的 div 标签 然而 它仍然呈现
  • 错误:“用于调用 Google Play 开发者 API 的项目 ID 尚未在 Google Play 开发者控制台中链接。”

    我在使用服务帐户访问 Google Play Developer API 时收到以下错误 用于调用 Google Play 开发者 API 的项目 ID 尚未在 Google Play 开发者控制台中链接 服务帐户电子邮件和 p12文件是使
  • r - 来自子/父关系的分层数据框架

    我有一个子父 data frame 我想将其转换为包含所有级别和级别编号的完整层次结构列表 下面的示例数据分为三个级别 但也可能更多 我可以使用什么函数来转换数据 Source data frame name c land water ai
  • 如何删除 Matplotlib 图中的线条

    如何删除 matplotlib 轴的一行 或多行 使其实际上被垃圾收集并释放内存 下面的代码似乎删除了该行 但从未释放内存 即使显式调用gc collect from matplotlib import pyplot import nump
  • 了解 Vaadin 如何使用 GWT

    在使用 Vaadin 大约一周后 我很好奇 Vaadin 如何使用 GWT GWT 将 Javacode 编译为 Javascript 每次重新部署时都必须执行此操作 由于 Vaadin 必须被理解为一个以服务器为中心的框架 从而消除了编写