JS Lab2017_Redux: время двигаться дальше?_Екатерина...

39
Redux Время двигаться дальше? Екатерина Лизогубова Coach @ JavaScript.Ninja

Transcript of JS Lab2017_Redux: время двигаться дальше?_Екатерина...

Page 1: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

ReduxВремя двигаться дальше?

Екатерина ЛизогубоваCoach @ JavaScript.Ninja

Page 2: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Кто я?

...Looking for job… :)

Учу писать на JavaScript

и все еще учусь сама :)

Page 3: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Про доклад

Page 4: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

О проекте

Page 5: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Что внутри?

➔ Java Backend

➔ React

Page 6: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Просто добавь в React➔ Redux

➔ Redux-Saga

➔ Redux-Form

➔ React-Router

➔ Redux-Router

➔ Server-side

rendering

Page 7: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Один мой день

[JBL-932] Implement buying

second ticket for social

sharing

Page 8: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Один мой день➔ Анализ существующего кода

➔ Планирование новых элементов

Redux-инфраструктуры

➔ Планирование API новых компонент

Page 9: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Один мой день

Page 10: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Один мой день❏ Код

❏ Еще код

❏ Тестирование в браузере

❏ Тестирование в Mobile Safari

Page 11: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Один мой день❏ commit

❏ merge

❏ qa

❏ регрессия :(

Page 12: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Плюсы➔ Предсказуемость

➔ Понятность

➔ Расширяемость

➔ Тестируемость

Page 13: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Плюсы #2➔ Простота

➔ Удобство отладки

➔ @dan_abramov

➔ Stack Overflow / Google

Page 14: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Оно тормозит

Page 15: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Структура данных

Время обновляется каждую секунду вызывая перерисовку всего лобби

Page 16: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Иммутабельность

Page 17: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Иммутабельность

Page 18: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Иммутабельность

Page 19: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Денормализация

ТурнирМатч

Время матча

Page 20: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Денормализация

ТурнирМатч

Время матча

Page 21: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Было Стало

Page 22: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Проблемы денормализации

➔ Как загружать данные

➔ Как выгружать данные

Page 23: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Redux и Ко

normalizr →

← reselect

Page 24: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Философия React

UI = f(props, state)

Page 25: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

componentWillReceivePropscomponentWillReceiveProps(nextProps) {

if (!this.props.bets && nextProps.bets) {

// logic here

}

}

Page 26: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

FLUX event есть event’а нет

Page 27: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

React ≠ Reactive

Event → React

Event → Update → Render

Page 28: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Конкуренты

4.0!

Page 29: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Observable proposal

stage 1

Page 30: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Observable proposal

Меньше учить

Page 31: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Observable proposal

Меньше boilerplate

Page 32: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Зачемнам redux?

Page 33: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Application State➔ все

➔ все, но...

➔ все, и...

Page 34: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Простой рецепт

⚠ Application State

REST Component 1

Store

Page 35: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Простой рецепт

✓ Application State

Простой рецепт

REST Component 1

Component 2

Store

Page 36: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Простой рецепт

✓ Application State

Простой рецепт

REST

WS

Component 1

Store

Page 37: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Простой рецепт

✓ Application State

Простой рецепт

REST

WS

Component 1

Component 2

Store

Page 38: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
Page 39: JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова

Вопросы?