通过避免NODE_ENV检查来改进React Server Side Rendering的最佳方法

时间:2016-12-16 23:56:03

标签: node.js reactjs react-dom react-dom-server react-server

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

在这次谈话中(从7:14左右开始) https://youtu.be/PnpfGy7q96U?t=7m14s

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

e.g。代替 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'),但这会返回'undefined'(我相信包装器代码意味着在客户端而不是服务器上运行)。

是否有任何其他建议可以获得更多制裁的性能提升?

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

0 个答案:

没有答案