Spec-Zone.ru › Redux 3

Мотивация

Поскольку требования к одностраничным приложениям JavaScript становятся всё сложнее, нашему коду необходимо управлять всё большим количеством состояния. Это состояние может включать ответы сервера и кэшированные данные, а также локально созданные данные, которые ещё не были сохранены на сервере. Состояние пользовательского интерфейса также усложняется, так как нам нужно управлять активными маршрутами, выбранными вкладками, спиннерами, элементами пагинации и так далее.

Управление этим постоянно меняющимся состоянием сложно. Если одна модель может обновлять другую модель, то представление может обновлять модель, которая обновляет другую модель, и это, в свою очередь, может привести к обновлению другого представления. В какой-то момент вы больше не понимаете, что происходит в вашем приложении, так как вы потеряли контроль над тем, когда, почему и как изменяется его состояние. Когда система непрозрачна и не имеет детерминированного поведения, трудно воспроизвести ошибки или добавить новые функции.

Как будто этого недостаточно, рассмотрите новые требования, которые стали распространёнными при разработке front-end продуктов. Как разработчики, мы должны обрабатывать оптимистичные обновления, рендеринг на стороне сервера, загрузку данных перед переходом по маршрутам и так далее. Мы пытаемся управлять сложностью, с которой раньше не сталкивались, и неизбежно задаём вопрос: пора ли сдаваться? Ответ — нет.

Эта сложность трудно преодолеть, так как мы смешиваем два понятия, которые очень трудно для человеческого разума осмыслить: мутацию и асинхронность. Я называю их Ментос и Кока-Кола. Оба могут быть эффективными по отдельности, но вместе они создают беспорядок. Библиотеки, такие как React, пытаются решить эту проблему на уровне представления, удаляя как асинхронность, так и непосредственное взаимодействие с DOM. Однако управление состоянием данных остается на вас. Именно здесь вступает Redux.

Следуя Flux, CQRS и Event Sourcing, Redux пытается сделать мутации состояния предсказуемыми, накладывая определённые ограничения на то, как и когда могут происходить обновления. Эти ограничения отражены в трёх принципах Redux.

© 2015–2017 Dan Abramov
Licensed under the MIT License.
http://redux.js.org/docs/introduction/Motivation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API