Лучший способ улучшить рендеринг на стороне сервера React, избегая проверок NODE_ENV

Я использую require('babel-register'), чтобы разрешить ES6 в node.js, и выполняю рендеринг моих компонентов реакции на стороне сервера.

В этом выступлении (начало около 7:14) https://youtu.be/PnpfGy7q96U?t=7m14s

Одна из главных рекомендаций по повышению производительности рендеринга на стороне сервера React на 30+% - указать ReactDOMServer на версию сборки на стороне клиента.

например, вместо var ReactDOMServer = require('act-dom/server') используйте var ReactDOMServer = require(' реагировать / dist / реаги.мин ')

Причина повышения скорости заключается в том, что версия на стороне клиента избегает проверок для process.env.NODE_ENV, который оказывается дорогостоящей операцией.

Этот трюк, казалось, отлично работал раньше, но в React 15 код на стороне клиента больше не предоставляет непосредственно методы renderToString и renderToStaticMarkup. Вместо этого оно было скрыто за страшно выглядящим свойством __SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:

Таким образом, вы можете сделать что-то вроде var ReactDOMServer = require('act / dist / реаги.мин ').__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;

Но очевидно, что это не очень хорошая идея (вероятно, не будет совместима с будущими версиями React).

Я попытался потребовать ("response /dom-server/dist/ реагировать-dom-server.min"), но это возвращает "неопределенное" (я считаю, что код оболочки предназначен для запуска на клиенте, а не на сервере).

Есть ли еще какие-либо предложения по достижению этой производительности, которые более санкционированы?

Для справки оригинальная проблема задокументирована здесь, но проблемы, похоже, были закрыты: https://github.com/facebook/react/issues/812

0 ответов

Другие вопросы по тегам