2014-09-11 82 views
5

我一直在探索最近的反应,并且我看到如何设置类似于节点的东西来呈现代码。我真的很感兴趣,因为速度的原因使用静态页面,但我不确定使用静态html时是否可以渲染反应组件。服务器渲染在静态网站上反应js

我可以使用类似nginx的东西来触发反应渲染吗?还是我需要更多,必须使用像node,rails或sinatra这样的东西?很抱歉,如果这是一个错误的问题,我没有强烈的服务器客户端交互意识。

+0

试试这个:https://www.npmjs.org/package/react-server-example – Douglas 2014-09-11 14:04:31

回答

8

我们导出一个函数,允许您呈现静态HTML - ReactDOMServer.renderComponentToStaticMarkupdocs)。

您需要运行Node才能调用该函数。或者,您还可以在开发您的网站时使用该功能,并将其命名为生成您写入磁盘的静态HTML文件。你仍然需要节点来调用这个函数,但是你不需要生产节点。然后,您可以使用该文件(例如,可以使用GitHub页面,S3或真正的任何地方,因为它只是HTML)。

+0

那么你是说我应该从节点服务器代码生成静态标记进行生产?或者你是否说过,一旦它创建标记,我可以在任何地方提供服务。只是澄清。感谢您的回应。 – 2014-09-12 14:19:49

+0

你如何在生产中运行它取决于你。你提到的只是想要提供静态HTML。你可以这样做,但为了使用React,你需要一个JS引擎来运行代码。你可以很容易地构建一些东西,通过一些路由映射和React组件,调用该方法,然后将输出保存到html文件。类似于Jekyll和其他“静态站点”生成器实际上需要Ruby或其他代码运行环境才能达到静态最终目标。 – 2014-09-15 20:03:24

3

是的,使用服务器渲染,您可以生成静态版本的网站,并像任何静态网站一样提供服务。

https://github.com/reactjs/react-page

阵营可以功率动态的,网络连接的应用程序。但是通过react-page, React也可用于构建静态博客,Github文档, 或任何其他静态网站。因为react-page使用服务器渲染,因此创建静态网站与创建一个wget命令一样简单。

节点server.js wget的-mpck --user剂= “” -e机器人=在OS X关闭 http://localhost:8080/index.html获取wget的:尽量 http://osxdaily.com/2012/05/22/install-wget-mac-os-x/或者如果您有 冲泡:冲泡安装wget的

这预建你的整个互动网站,所以它可以从 文件服务器或github等服务。不要忘记启用gzip文件 服务器!反应标记很大,但压缩得很好。

5

如果您打算在CDN(例如GitHub Pages,Amazon S3/CloudFront,Firebase)中托管您的React网络应用程序,那么您可能希望将所有基于反应的页面预渲染为静态HTML文件在编译步骤中。这里有一个例子:

https://github.com/koistya/react-static-boilerplate

(免责声明:我是作者)

作为下一个步骤,你可以添加对这个网站特拉维斯CI自动生成的配置,这样,一旦新版本的源文件被推送到GitHub存储库,Travis CI将构建项目并将其推送到GitHub页面(或Amazon S3,Firebase)。