我知道这是一个相当常见的问题,但读了很多书后我仍然无法理解这个概念。
到目前为止,我所理解的是,服务器端和客户端语言的主要区别在于,第一个语言需要由服务器解释才能发送到浏览器,而第二个则不需要。
我曾使用过 Vaadin,我知道这是一个服务器端框架,因为 java 代码需要解释为 HTML 和 Javascript 才能发送到浏览器。但后来我读到 GWT 是客户端,我不明白为什么,因为我们使用 Java 小部件设计所有页面元素,并且它们需要解释为 HTML 和 Javacript,对吧?那么,GWT 不应该是一个服务器端框架吗?
那么 JSF 呢?我正在与 Primefaces 合作,并开发使用 beans 来获取服务器信息的 xhtml 文件。这意味着 xhml 文件是客户端而 Java bean 是服务器端,对吗?
谢谢!
最佳答案
这与编写代码的语言无关,而与代码的运行位置有关。
GWT 是一种客户端技术,就像 TypeScript 或 CoffeeScript 一样:它们首先必须被编译或转译(对于 GWT 来说是真正的编译)为 JavaScript。编译必须在构建时完成,然后再将应用程序部署到服务器。一旦编译为 JavaScript,您就不需要服务器:脚本可以打包到浏览器扩展、移动应用程序中,或者只是在文件系统之外运行(或者部署到 Node.js 服务器以作为服务器端代码运行! ).
您可以与 Dart 进行类比:dart2js 将 Dart 代码转换为 JavaScript,以便它可以在浏览器中运行,并且/或者您可以在服务器端的 DartVM 中运行 Dart 代码。
JSF 是一种服务器端技术:事物在服务器中运行并生成由浏览器(客户端)解释的代码(HTML、JavaScript、CSS)。
我无法真正区分 Vaadin,因为我不知道它的架构。如果 GWT Widget 必须预先编译,那么它将是一种服务器端技术,生成高度动态的网页(因此它们甚至可以离线运行)。如果它即时编译 GWT 小部件,那么它会介于两者之间;但它主要是一种服务器端技术。
关于java - 服务器端和客户端框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25809772/