ReactJS服务器端呈现与客户端呈现
我刚开始研究ReactJS,发现它为您提供了两种呈现页面的方法:服务器端和客户端。但是,我无法理解如何一起使用它。它是构建应用程序的两种不同方式,还是可以一起使用?
如果我们可以一起使用它,怎么做 - 我们是否需要在服务器端和客户端复制相同的元素?或者,我们可以在服务器上构建应用程序的静态部分,以及客户端上的动态部分,而不与已经预呈现的服务器端建立任何连接吗?
回答如下:对于给定的网站/ Web应用程序,您可以使用客户端,服务器端或两者的响应。
Client-Side
在这里,您在浏览器上完全运行ReactJS。这是最简单的设置,包括大多数示例(包括http://reactjs上的示例)。服务器呈现的初始HTML是占位符,一旦加载了所有脚本,整个UI就会在浏览器中呈现。
Server-Side
将ReactJS视为服务器端模板引擎(如玉器,车把等......)。服务器呈现的HTML包含应该使用的UI,您不必等待加载任何脚本。您的页面可以被搜索引擎编入索引(如果没有执行任何javascript)。
由于UI是在服务器上呈现的,因此没有任何事件处理程序可以工作,并且没有交互性(您有一个静态页面)。
Both
这里,初始渲染在服务器上。因此,浏览器接收的HTML具有应有的UI。加载脚本后,将再次重新呈现虚拟DOM以设置组件的事件处理程序。
在这里,您需要确保使用您在服务器上呈现的相同props
重新呈现完全相同的虚拟DOM(根ReactJS组件)。否则,ReactJS会抱怨服务器端和客户端虚拟DOM不匹配。
由于ReactJS在重新渲染之间区分虚拟DOM,因此真正的DOM不会发生变异。只有事件处理程序绑定到真正的DOM元素。