与JSF相比,React如何具有更好的性能

时间:2015-06-02 05:31:03

标签: jsf jsf-2 reactjs

我是React js的新手。以前我使用JSF框架来构建Web应用程序。根据我在JSF中的知识实际上是什么,从服务器端它将生成相应JSF标记的html代码并将其发送到浏览器并显示它。如果您使用的是JSF 2,则相应的前端html部分也可以通过AJAX替换。

我认为我们可以通过React框架完成同样的事情。在反应JS中,您可以从服务器生成客户端html代码,它将使用一些Javascript引擎(Nashorn Javascript引擎)在前端呈现。

因此,在这两种情况下,工作几乎相同(从服务器创建的响应)。现在,每个人都会像React JS一样谈论高性能框架。那么有谁可以解释它如何提供更好的性能?

我重申我是React JS的新手

2 个答案:

答案 0 :(得分:1)

在内部,ReactJS使用虚拟DOM ,它将“映射”到“真正的”DOM。在React中,您将变量stateprops提供给react组件。 React使用特殊算法来检测组件stateprops中的更改,并且只会通过将虚拟与“真实”DOM同步来重新渲染受影响的部分。

答案 1 :(得分:0)

JSF 是一个 MVC 框架,它利用服务器端渲染并使用许多标记文件。 React 是一个用于根据 SPA(单页应用程序)模型为应用程序构建图形界面的库。 React 的优势在于它能够非常快速地更新 dom,因为它有一个虚拟的。 最终的应用程序可以放在一个文件中。 正如所说 React 只是一个库,单独使用它来创建应用程序是没有效率的。 (同样 JSF 只是一个规范,没有 Rich Faces、Prime Faces、Omni Faces、Boots Faces 和 3rd part 库,创建应用程序将很困难)

在 SPA 模型中,会话与用户一起存储,后端只是前端调用的一组服务。 第一个身份验证调用会生成一个令牌 (JWT),该令牌存储在客户端,然后将用于 调用服务器的(无状态)REST 服务。这就是服务器如何理解它是同一个用户的方式。 会话的关键信息存储在客户端,这个事实已经让你明白服务器的任务被解除了 将所有连接用户的会话保存在内存中。

实际上,当用户在 SPA 应用程序上进行交互时,传输的是数据,而不是标记,因为所有或大部分标记已经在客户端上, 这意味着可以很好地节省数据传输。 REST 范式使用 json 来构建要与客户端交换的数据。 到达客户端的json对象(Javascript Object Notation)是一个代表Javascript对象的字符串,后者提供原生功能 将 Json 字符串转换为 Javascript 对象,反之亦然。除了使用这个对象“去那里到那个特定点”并更新显示的数据之外,React 没有什么可做的 而且它做得非常快。

JSF 需要在服务器端存在自己的和第三方 Java 库(配置为应用服务器的一部分),因此需要配置时间 与准备部署的 React 应用程序相比,它更高并且具有严格的可扩展性,该应用程序仅由 javscript 文件组成(甚至一个就足够了) 它只需要像 Nginx 这样的 Web 服务器来运行。很容易理解最后一个解决方案是多么容易扩展,因为配置减少到零。 要扩展,只需在我们的 React 应用程序中创建一个 nginx docker 映像,我们就可以从开发 PC 转移到互联网上的各种云解决方案 准备在多个按需实例中复制我们的映像。