2015-10-13 9 views
1

Я использую рубин на рельсах (с конвейером активов), reactjs (с react-rails gem) и reflux.Каков наилучший способ использования конвейеров-реагентов и рельсов?

В настоящее время я определяю все реагирующие компоненты, хранилища reflux и действия как глобальные переменные в javascript, поэтому они объявляются на каждой странице в моем приложении rails.

Я боюсь, что когда у меня будет сотни компонентов и магазинов, у браузера будут проблемы с памятью, определяющие все эти переменные.

Это действительно проблема? Есть ли лучший способ использовать этот стек вместе с конвейером активов?

ответ

1

Один из способов - отделить компоненты Реагента от Rails и использовать обычную экологию React с участием npm и webpack, чтобы вставить уже преобразованный JS-файл в ваш конвейер Rails. Таким образом, Rails может по-прежнему управлять общим использованием активов для вашего конвейера, но не нужно напрямую генерировать JS из React. Существует несколько описаний веб-страниц о том, как использовать веб-пакет таким образом. Лично я использую один найденный на GitHub netguru под названием react_webpack_rails (https://github.com/netguru/react_webpack_rails), но вам может не понадобиться помощник, если вы уже знаете, что делаете с webpack и реагируете. Есть и другие вспомогательные инструменты, подобные этому; вы можете посмотреть https://github.com/shakacode/react-webpack-rails-tutorial или http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/ для других обсуждений.

Я не являюсь поклонником глобальных переменных в Javascript, поэтому я нашел использование отдельного, но интегрированного подхода React-and-Rails, такого как Netguru, чтобы быть лучшим способом справиться с этим, не загромождая ни мою реализацию JS, ни мои представления Rails.

Что касается вашего вопроса об интерфейсе «вес», я бы сказал, что это еще не имеет значения. Как и большинство вопросов скорости или использования памяти, лучше избегать предварительной оптимизации. Когда вы сталкиваетесь с узкими местами в реальном использовании, тогда рефакторинг будет самым большим узким местом итеративно, пока производительность не будет приемлемой снова. В любом случае, если вы выполняете одностраничное приложение в React, вы, вероятно, ставите столько же нагрузки на клиента, сколько и выполняете, каждый раз пересылая страницы Rails (игнорируя стоимость самих рейсов). Просто обратите внимание на профилирование на раннем этапе и контролируйте, что вы делаете, но преждевременно не оптимизируйте, пока не станет очевидно, что вам нужно.