1

我正在使用 require('babel-register') 来允许在 node.js 中使用 ES6 并对我的 react 组件进行服务器端渲染。

在本次演讲中(7:14 左右开始) https://youtu.be/PnpfGy7q96U?t=7m14s

将 React 服务器端渲染性能提高 30% 以上的一项主要建议是将 ReactDOMServer 指向构建的客户端版本

例如,代替 var ReactDOMServer = require('react-dom/server') 使用 var ReactDOMServer = require('react/dist/react.min')

速度提高的原因是因为客户端版本避免了对 process.env.NODE_ENV 的检查,结果证明这是一项昂贵的操作。

这个技巧以前似乎很管用,但在 React 15 中,客户端代码不再直接公开 renderToString 和 renderToStaticMarkup 的方法。相反,它隐藏在看起来很吓人的属性 __SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 后面:

因此,您可以执行类似 var ReactDOMServer = require('react/dist/react.min').__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;

但显然这似乎不是一个好主意(可能不会与 React 的未来版本向前兼容)。

我试过 require('react/dom-server/dist/react-dom-server.min') 但这会返回一个'未定义'(我相信包装代码是为了在客户端而不是服务器上运行)。

是否还有其他更受认可的建议来实现这种性能提升?

作为参考,此处记录了原始问题,但问题似乎已关闭: https ://github.com/facebook/react/issues/812

4

0 回答 0