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