我知道这是一个相当常见的问题,但经过大量阅读后,我仍然无法理解这个概念。
到目前为止我所理解的是,服务器端和客户端语言的主要区别在于,第一个需要由服务器解释为发送到浏览器而第二个不需要。
我和Vaadin一起工作,我知道这是一个服务器端框架,因为java代码需要解释为HTML和Javascript才能发送到浏览器。但后来我读到GWT是一个客户端,我无法理解为什么,因为我们用Java小部件设计所有页面元素,需要将它们解释为HTML和Javacript吗?那么,GWT不应该是服务器端框架吗?
那JSF呢?我正在使用Primefaces,我开发了使用bean获取服务器信息的xhtml文件。这意味着xhml文件是客户端的,Java bean是服务器端的吗?
谢谢!
答案 0 :(得分:1)
这不是代码编写的语言,而是代码的运行方式。
GWT是一种客户端技术,就像TypeScript或CoffeeScript一样:它们首先必须被编译或转换(对GWT来说是真正的编译)到JavaScript。在将应用程序部署到服务器之前,必须在构建时完成编译。一旦编译为JavaScript,您就不需要服务器:脚本可以打包到浏览器扩展,移动应用程序中,或者只是用完文件系统(或者部署到Node.js服务器以作为服务器端代码运行! )。
您可以使用Dart绘制并行:dart2js将Dart代码转换为JavaScript,以便它可以在浏览器中运行,和/或您可以在服务器端的DartVM中运行Dart代码。
JSF是一种服务器端技术:在服务器中运行并生成由浏览器(客户端)解释的代码(HTML,JavaScript,CSS)。
我无法告诉Vaadin,因为我不知道它的架构。如果必须预先编译GWT Widgets,那么它将是一种服务器端技术,生成高度动态的Web页面(因此它们甚至可以脱机运行)。如果它在运行中编译GWT小部件,那么它就会介于两者之间;但它主要是服务器端技术。
答案 1 :(得分:1)
Vaadin使用GWT将客户端代码库保留在Java中。 GWT将Java代码编译为依赖于浏览器的JavaScript。没有GWT,所有代码都应该用JS编写。 Vaadin是RIA应用程序框架,因此使用纯JavaScript管理复杂的小部件代码(查看表源代码)会很痛苦而且不容易。您可以在客户端编写一些逻辑,也可以在Vaadin7中使用纯JavaScript。它易于扩展,为使用最少的JavaScript编写优秀且丰富的UI提供了坚实的基础。