flux, redux, reswift

33
Flux

Upload: rambler-ios

Post on 22-Jan-2017

69 views

Category:

Technology


0 download

TRANSCRIPT

Flux

Предыстория

• Сделано в FB

• Хорош в работе с динамическими данными

Программа

• Что такое flux?

• Концепция

• Что есть для iOS?

Flux

• Архитектура приложения

• Flux - однонаправленный поток данных со специфичными событиями и слушателями

Проблемы FB

• Проблема отображения непросмотренных тредов и отображения списка тредов

• Изменение одной модели влечет за собой изменение других

• MVC не понравилось

Поток данных

Dispatcher

Dispatcher

• Рассылает действия зарегистрированным хранилищам

• Может управлять порядком

• Может ожидать ответа от предыдущего хранилища

Dispatcher

Поток данных

Store

Store• Что-то вроде модели

• Предлагается складывать коллекции

• Может храниться время и состояние

• VM?

• Можно сделать полноценным хранилищем?

Store

Поток данных

View

View

• Биндятся к своим хранилищам

• Используют React

View

Поток данных

Action

Action

• Содержит тип и данные

• Пересылаются Dispatcher'ом в Store

• Могут появляться как из UI, так и из нотификаций, демонов и прочего

Action

Поток данных

Поток данных

Важные моменты

• Однонаправленность

• Состояние хранится в хранилищах

• Синхронное обновление

• Нет каскадных обновлений данных

Мир js

• Redux: ~20k звезд

• Refluxjs: ~5k звезд

• бесконечно их

Reflux

• Более функциональный

• Нет Dispatcher

• Хранилища могут слушать другие хранилища

• Поддерживаются параллельные потоки данных

Что есть под iOS?

• ReSwift: 2100 звезд

• SwiftFlux: 166 звезд

ReSwift

• Вдохновлялись Redux

• Тоже не имеет dispatcher

• Добавились reducer'ы

Схема

Преимущества

• Понятный однонаправленный поток данных

• Все кроме View реюзабельно

• Простота дебага по полученным экшенам

Итоги

• Flux - про однонаправленное течение данных в приложении

• Есть стандартные компоненты: Action, Dispatcher, Store, View

• Готовые реализации под iOS