Ответ 1
Как вы сказали, React - это просто V в MVC. Итак, где вы помещаете свою бизнес-логику?
Для небольшой бизнес-логики, ориентированной на конкретные взгляды, хорошо, как вы это делали. Если бизнес-логика находится в компоненте, она будет находиться в обработчике событий, в рендере или любом другом компоненте.
Если у вас есть бизнес-логика, не относящаяся к просмотру, и она выполняется на клиенте (или на клиенте и на сервере), всегда полезно отличить это от отдельного модуля JavaScript. React не очень хорошо сочетается с AMD, поэтому вам лучше не использовать RequireJS для модуляции. Вероятно, вы должны использовать Browserify или Webpack. В этом случае все, что вам нужно сделать, это добавить это в верхний или ваш файл компонента: var myBusinessLogic = require('./myBusinessLogic')
. Теперь вы можете делегировать обработку этому модулю. Это предпочтительный способ, потому что модули JavaScript легко проверяются с помощью Jest, Jasmine, Karma или Mocha.
Существует также третий сценарий, в котором вы делегируете бизнес-логику серверу. Вы можете напрямую совершать Ajax-вызовы API на сервере, выполнять эту обработку, или вы можете использовать более сложный способ и использовать Flux. Там множество реализаций Flux, таких как Alt, Redux и Fluxxor. Я предпочитаю иметь собственную реализацию Flux, используя диспетчер по умолчанию. Внутри ActionCreators
я вызываю метод на clientApi
(JS-модуль), который выполняет вызов Ajax, используя Axios на сервере. Этот вызов обрабатывается экспресс-маршрутом, который, наконец, делегирует бизнес-логику serverApi
.
EDIT: я просто переехал в Redux:)