Angularjs с redux

Я читал некоторые на Redux. Большая часть того, что я читаю, сочетает redux с react. Я использую Angularjs. Есть ли веская причина использовать Redux против просто управления состоянием в области angularjs и позволяя angular управлять привязками

2 ответов


Redux имеет преимущества с Angular 1.x если у вас много общего состояния. В приложении Angular, над которым я работаю, у нас есть много страниц с общей моделью и несколькими компонентами, которые делают (перекрывающиеся) изменения в этой модели. Не всегда легко синхронизировать эти данные или иметь стандартный способ внесения изменений. Redux-хороший способ сделать это, хотя вы, безусловно, можете реализовать что-то подобное, просто используя угловые сервисы. Односторонний поток данных, который использует Redux, проще (на мой взгляд) следуйте за тем, что вы обычно делаете в Angular. И наоборот, введение Redux, вероятно, повредит вашей способности писать очень быстрые прототипы, так как есть немного больше работы для передачи данных. Это не имеет значения для меня, но может иметь значение для других.

главная принципы Redux по-прежнему применяются в угловых приложениях:

  • единый источник истины (единый объект состояния). Как я сказал выше, я думаю, что легче управлять государством, когда оно находится в одном месте против управляется в различных угловых областях или службах. Scope-soup-реальная проблема в некоторых приложениях.
  • состояние неизменяемо. Это то, где большая часть трения с Angular входит, так как Angular (и Javascript) делают мутирующие данные очень легкими. Но это поможет вам написать более безопасный код. Поскольку вы можете изменить неизменяемый объект, только создав копию, вы можете быть более уверены, что любая манипуляция данными, которую вы делаете в директиве, не нарушит другие директивы. И наоборот, вы можете ожидайте, что другие директивы не будут вносить изменения в ваши данные. Все эти модификации проходят через центральное место (объект с одним состоянием, через редукторы), поэтому их легче найти.
  • изменения производятся чистыми функциями. Я думаю, что это полезно в любом приложении JS. Чем больше у вас кода, который не имеет кучу побочных эффектов или зависимостей фреймворка, тем проще ваше приложение понять и протестировать. Многие наши тесты для углового кода имеют кучу настроек приложения шаблонный. Тестирование редуктора невероятно просто по сравнению, так как это всего лишь функция Javascript.

использование Redux означает, что меньшая часть вашего кода является угловой. Это означает, что у вас есть более простой путь обновления, если вы решите не использовать угловые. Или даже если вы просто хотите перейти на Angular 2. Насколько легче, сказать трудно.

Я не думаю, что есть тонна перекрытия из-за того, что угловой является больше рамкой, чем библиотекой, но есть вещи в Redux вы не можете использовать столько преимуществ в Angular. Вы можете точно знать, какая часть вашего состояния приложения меняется, но Angular собирается запустить свой цикл дайджеста и проверить все в любом случае. Угловой 2 лучше в этом отношении, хотя. Вам придется перепрыгнуть через некоторые обручи, чтобы все ваши директивы работали с неизменяемыми данными. И особенно, если вы хотите отправить каждое поле, которое пользователь меняет через магазин Redux, так как ng-модель хочет мутировать свойство, которое вы передаете.

каждый приложение отличается, но использование Redux имеет смысл в типе угловых приложений, над которыми я работал.


Redux можно использовать с любой технологией javascript. В общем, вы можете интегрировать его в проект Agular. В настоящее время он преобразует Способ построения приложений. Это позволяет по-новому представить приложения с помощью однонаправленного потока данных. В результате это дает вам лучший контроль над состоянием приложения и инструментами для устранения проблем, связанных с изменчивостью данных. Взгляните на это большое учебник по использованию Redux в угловых проектах.