Я только недавно обнаружил Redux . Все выглядит хорошо. Есть ли минусы, ошибки или компромиссы в использовании Redux поверх Flux? Спасибо
источник
Автор Redux здесь!
Я хотел бы сказать, что вы собираетесь использовать следующие компромиссы:
Вам нужно научиться избегать мутаций. Flux не имеет представления о мутировании данных, но Redux не любит мутации, и многие пакеты, дополняющие Redux, предполагают, что вы никогда не изменяете состояние. Вы можете применить это с помощью пакетов только для разработчиков, таких как redux-immutable-state-invariant , использовать Immutable.js или довериться себе и своей команде в написании немутативного кода, но это то, что вам нужно знать, и это нужно быть сознательным решением, принятым вашей командой.
Вам нужно будет тщательно выбирать свои пакеты. Хотя Flux явно не пытается решить «близлежащие» проблемы, такие как отмена / повтор , постоянство или формы , Redux имеет точки расширения, такие как промежуточное ПО и средства улучшения хранилища, и породил молодую, но богатую экосистему . Это означает, что большинство пакетов являются новыми идеями и еще не получили критическую массу использования. Вы можете зависеть от чего-то, что через несколько месяцев будет явно плохой идеей, но пока трудно сказать.
У вас еще не будет хорошей интеграции с Flow. В настоящее время Flux позволяет выполнять очень впечатляющие статические проверки типов, которые Redux пока не поддерживает . Мы доберемся туда, но это займет некоторое время.
Я думаю, что первое является самым большим препятствием для начинающих, второе может стать проблемой для энтузиастов ранних последователей, а третье - моя личная любимая мозоль. Кроме этого, я не думаю, что использование Redux приносит какие-то определенные недостатки, которых избегает Flux, и некоторые люди говорят, что у него даже есть некоторые преимущества по сравнению с Flux.
Смотрите также мой ответ о преимуществах использования Redux .
shallowEqual
проверке реакции-избыточности используется, чтобы определить, изменилось ли состояние. Но его можно заменить на deepEqual или JSON.stringify и сравнить. В конце концов, это несколько снижает производительность - но это чистые вычисления без DOM - достаточно быстро. И в любом случае рендеринг сам по себе один и тот жеИ Redux, и Flux требуют значительного количества стандартного кода для охвата многих общих шаблонов, особенно тех, которые включают асинхронную выборку данных. В документации Redux уже есть несколько примеров уменьшения шаблонов: http://redux.js.org/docs/recipes/ReducingBoilerplate.html . Вы можете получить все, что вам может понадобиться, из библиотеки Flux, такой как Alt или Fluxxor, но Redux предпочитает свободу над функциями. Это может быть недостатком для некоторых разработчиков, потому что Redux делает определенные предположения о вашем состоянии, которые могут быть случайно проигнорированы.
Единственный способ для вас действительно ответить на ваш вопрос, если вы можете попробовать Redux, возможно, в личном проекте. Redux появился из-за необходимости лучшего опыта разработчиков, и он смещен в сторону функционального программирования. Если вы не знакомы с функциональными концепциями, такими как редукторы и состав функций, то вы можете замедлиться, но ненамного. Преимущество внедрения этих идей в поток данных - это более легкое тестирование и предсказуемость.
Отказ от ответственности: я перешел с Flummox (популярная реализация Flux) на Redux, и его преимущества намного перевешивают все недостатки. Я предпочитаю гораздо меньше магии в моем коде. Меньше магии обходится дороже, но это очень маленькая цена.
источник
Flux и Redux . , ,
Redux не является чистой реализацией Flux, но определенно вдохновлен Flux. Самое большое отличие состоит в том, что он использует одно хранилище, которое упаковывает объект состояния, содержащий все состояния для вашего приложения. Вместо создания хранилищ, как вы делаете во Flux, вы будете писать функции-редукторы, которые будут изменять состояние одного объекта. Этот объект представляет все состояние вашего приложения. В Redux вы получите текущее действие и состояние и вернете новое состояние. Это означает, что действия являются последовательными, а состояние неизменным. Это привело меня к самому очевидному мошенничеству в Redux (на мой взгляд).
Redux поддерживает неизменную концепцию.
Почему неизменность?
Для этого есть несколько причин:
1. Согласованность - состояние магазина всегда изменяется редуктором, поэтому легко отслеживать, кто что меняет.
2. Производительность - поскольку она неизменна, Redux нужно проверять только предыдущее состояние! == текущее состояние и, если да, отображать. Не нужно зацикливать состояние каждый раз, чтобы определить рендеринг.
3. Отладка - новые потрясающие концепции, такие как Time Travel Debugging и Hot Reloading .
ОБНОВЛЕНИЕ: если это не было достаточно убедительным, наблюдайте, как Ли Байрон отлично говорит о неизменных пользовательских интерфейсах .
Redux требует, чтобы разработчик (и) дисциплинировал кодовую базу / библиотеки, чтобы поддержать эту идею. Вам нужно убедиться, что вы выбираете библиотеки и пишете код не изменяемым образом.
Если вы хотите узнать больше о различной реализации концепций Flux (и о том, что лучше всего подходит для ваших нужд), посмотрите это полезное сравнение.
После сказанного, я должен признать, что Redux - это то место, где будет развиваться JS (как в написании этих строк).
источник
Одним из самых больших преимуществ использования Redux по сравнению с другими альтернативами Flux является его способность переориентировать ваше мышление на более функциональный подход. Как только вы поймете, как все провода соединяются, вы поймете его потрясающую элегантность и простоту в дизайне и уже не сможете вернуться назад.
источник
Я предпочитаю использовать Redux, так как он использует один магазин, что значительно облегчает управление состоянием по сравнению с Flux , также как и Redux DevTools это действительно полезные инструменты, которые позволяют вам видеть, что вы делаете с вашим состоянием, с некоторыми полезными данными, и он действительно встроен в инструменты разработки React.
Кроме того, Redux обладает большей гибкостью при использовании с другими популярными средами, такими как Angular. . В любом случае, давайте посмотрим, как Redux представляет себя в качестве фреймворка.
Redux имеет три принципа, которые могут очень хорошо представить Redux, и они также являются основным отличием Redux и Flux.
Единственный источник правды
Состояние только для чтения
Изменения сделаны с чистыми функциями
для получения дополнительной информации посетите здесь
источник
Redux требует дисциплины в отношении неизменности. Что-то, что я могу порекомендовать, это ng-freeze, чтобы сообщить вам о любой случайной мутации состояния.
источник
Насколько я знаю, Redux вдохновлен флюсом. Flux - это архитектура, подобная MVC (контроллер представления модели). Facebook представляет поток из-за проблемы масштабируемости при использовании MVC. Так что поток - это не реализация, а просто концепция. На самом деле излишним является реализация потока.
источник