【发布时间】:2014-09-16 08:57:19
【问题描述】:
我是 vaadin 框架的新手,正在阅读 Vaadin 书籍,但无法理解客户端 Vaadin 应用程序的流程。如果有人解释 Vaadin 客户端应用程序的工作原理,将不胜感激。由于 vaadin 提供了两种开发模式,即客户端和服务器端。
【问题讨论】:
我是 vaadin 框架的新手,正在阅读 Vaadin 书籍,但无法理解客户端 Vaadin 应用程序的流程。如果有人解释 Vaadin 客户端应用程序的工作原理,将不胜感激。由于 vaadin 提供了两种开发模式,即客户端和服务器端。
【问题讨论】:
other answer 并不完全准确或彻底。所以我将添加我自己对这个主题的看法。
Vaadin 的主要观点是,作为一名程序员,我们的思维方式类似于构建桌面应用程序。 我们并不真正担心应用程序的客户端与服务器端。 我们认为是打开一个窗口(@987654322@ 实例),带有表单 (Layouts) 和字段& 按钮 (Components)。
我们使用纯 Java 编写所有这些 UI、布局和组件对象。底层Vaadin 框架利用Google Web Toolkit (GWT) 将Java 代码的用户界面部分转换为JavaScript。该 JavaScript 代码在运行时透明地传递给 Web 浏览器。因此 JavaScript 用于在屏幕上绘制按钮和字段,并用于检测用户何时单击该按钮或在该字段中键入。
同时,您的业务逻辑在服务器端仍保留在纯 Java 中。用户单击按钮这一事实会导致您的一些 Java 代码在服务器上执行。与在字段中输入相同;键入的文本会自动转发到服务器上的 Java 代码。从我们 Java Vaadin 应用程序开发人员的角度来看,整个应用程序似乎是在纯 Java 中运行的。 Vaadin 框架会自动处理以下来回通信:
[JavaScript/客户端⇆ Java/服务器端]。
因此,使用 Vaadin 开发 Web 应用程序与开发 Web 应用程序完全不同。大多数情况下,Vaadin 开发人员不需要关心 HTTP、HTML、CSS、DOM、JavaScript/ECMAScript、Servlet/JSP 等。所有这些 Web 技术确实都在使用 Vaadin 应用程序,但 Vaadin 透明地为我们处理所有这些,几乎是神奇的。我们只使用纯 Java 编写,以便在 Vaadin 中构建非常漂亮的“桌面”式应用程序。
您的所有业务逻辑、Java 业务对象、SQL 和数据库连接等都只存在于服务器上。 Web 浏览器仅包含足够的数据和 JavaScript 来显示当前预期的用户界面。我认为这是旧X Window System 的现代转世。 (忽略最后一条评论是你太小了,不记得 MTV 播放音乐视频的时候。)
在网络浏览器上,我们只执行 JavaScript。我们的用户不需要在他们的计算机上安装 Java。不涉及 Java Applet。
这听起来难以置信或难以掌握。那是因为 Vaadin 的架构截然不同。 Vaadin 肯定不是“又一个 HTML 模板 Web 应用程序框架”。 Vaadin 的方法几乎是独一无二的。我所知道的唯一类似架构的 Web 应用开发框架是 Xojo Web Edition。
Vaadin 团队一直致力于让 Vaadin 应用脱机工作,而不是连接到 Java 服务器。但这是最前沿的研发工作,而不是 Vaadin 的主要目的或用例。当您阅读“客户端 Vaadin”时,可能就是在这种情况下。
另一个可能提示您提出问题的上下文是 Vaadin 之书的 Client-Side Applications 章节。基本上这是关于最新版本的 Vaadin 增加了对高级开发人员的支持,这些开发人员希望更多地控制客户端 Web 浏览器上 JavaScript 中发生的事情。但我认为,首先吸引人们使用 Vaadin 的主要目的是分散注意力:不关心客户端 Web 浏览器上的 JavaScript。所以我建议在学习 Vaadin 时跳过那一章。
或者上下文可能是指使用 GWT 在 Web 浏览器上呈现基于 JavaScript 的用户界面表示。在学习 Vaadin 时,您可以忽略此上下文,因为它仅适用于将您自己的用户界面小部件构建为 an add-on 到 Vaadin 的内置小部件库存。
Vaadin API doc 中列出的许多类都是这些与 GWT 相关的客户端类,您在学习 Vaadin 时应该忽略它们。对于许多工具来说,浏览 API 文档是一种很好的学习方式。但对于 Vaadin 来说,情况并非如此。在日常工作中,我们只使用所列课程的一小部分。我建议改为关注Book of Vaadin、Demo site、Tutorial、Forums 和 StackOverflow。
【讨论】:
客户端应用程序不过是浏览器下载和执行的JavaScript 应用程序。此 JavaScript 应用程序是用 Java 编写的,并由 Google Web Toolkit (GWT) 编译器编译为 JavaScript,该编译器内置于您的 IDE 使用的 Vaadin 库中。
此应用程序可能会或可能不会与服务器上运行的 Java 应用程序交互。如果没有,那么它是一个客户端应用程序。如果是,则它是一个服务器端应用程序。
希望对你有帮助。
【讨论】: