2015-07-10 84 views

回答

2

在服务器上,使用React.renderToStringhttps://facebook.github.io/react/docs/top-level-api.html#react.rendertostring)和相同的组件JSX和相同的道具。然后,在您的服务器呈现的模板中,将生成的标记字符串放置在您安装React组件客户端的相同容器元素中。

React组件在给定相同道具的浏览器和服务器上会生成相同的标记。在浏览器中反应足够智能(通过data-react-id属性的值)可以识别组件已经在服务器上呈现为字符串并在初始页面加载时传递给浏览器。所以,它不会再渲染它 - 它只会连接组件的事件。

如果您的HTTP服务器不是基于节点的,您可以使用简单的消息传递实现(例如ZeroMQ或Redis pub/sub)将呈现请求发送到在同一台服务器上运行的小型节点脚本。此脚本应具有对使用客户端的相同JSX组件的文件系统访问权限。节点脚本应接受组件JSX和一个props对象的路径,并将React.renderToString的输出返回到主HTTP服务器以包含在模板中。

相关问题