2016-08-18 95 views
3

任何人都可以向我解释Vaadin的服务器端Java组件的工作原理吗?他们似乎在服务器端状态与称为“widgetset”的客户端JavaScript引擎之间进行同步。Vaadin如何工作?

有没有人有更详细的Vaadin内部解释?我一直在试图向我的同事解释这一点,并且无言以对。

+0

碰巧注意到您在卡尔加里是。我将在两周内举办一场Vaadin聚会,探讨Vaadin的基本知识。请加入我们,如果你有机会,也请带上你的同​​事。 https://www.meetup.com/Vaadin-Calgary/events/230478117/(抱歉在这里张贴这个,但没有办法发送私人信息在SO上,据我所知) – Marcus

回答

7

基本上,Vaadin在服务器上运行您的UI代码,并使用浏览器作为“瘦客户端”(widgetset)来创建和更新DOM。所有的服务器 - 客户端通信都是自动的,由Vaadin负责。就浏览器而言,浏览器的最终结果仅仅是一个普通的HTML5应用程序,不需要插件,它可以在不同的设备上工作。

再深入一点,框架中的每个组件都有一个服务器端和一个浏览器实现。两者共享一个由框架维护和沟通的状态。由于所有的通信都由框架来处理,所以它只能通过发送差异和跳过发送默认等来优化传输。另外,由于widgetset包含浏览器组件的JS实现,因此不会生成HTML模板在服务器上传送,只有轻量级的实际组件状态。

下面是从文档更深入的解释:https://vaadin.com/docs/-/part/framework/introduction/intro-overview.html

+0

我也会添加到这个答案基于GWT开发自己的Vaadin组件有助于理解Vaadin的工作原理 – kukis

+0

对于“瘦客户端”来说,这是相当重的。基本上客户端和服务器交换UI的状态变化(按钮点击,文本改变等),Widgetset /客户端负责在浏览器中渲染它。因此,如果你操纵服务器中的状态,例如添加一个表格行,客户端通过ne下一个请求(即刻推送)通知它。 – ssindelar