37
ИЗОМОРФНЫЕ ПРИЛОЖЕНИЯ С REACT И REDUX adn.agency

Adn@it'summer - Изоморфные приложения с React и Redux

Embed Size (px)

Citation preview

Page 1: Adn@it'summer - Изоморфные приложения с React и Redux

ИЗОМОРФНЫЕ ПРИЛОЖЕНИЯ С REACT И REDUX

adn.agency

Page 2: Adn@it'summer - Изоморфные приложения с React и Redux

1. Исполняется в различных окружениях

2. Гарантирует одно поведение

3. Справляется с разностью окружений через абстракции

2Что такое Изоморфный Javascript?

Page 3: Adn@it'summer - Изоморфные приложения с React и Redux

3Что он нам дает?

1. Мы можем создать изоморфный Web UI

2. Поддерживает SEO

3. Работает как SPA

4. Единая языковая среда

5. Максимально переиспользуемый код

6. Прирост производительности на старте

Page 4: Adn@it'summer - Изоморфные приложения с React и Redux

4Что он нам не дает?

1. Не работает с хранилищами, работает как правило с RESTfull API

2. Чаще всего используется для Web UI

3. Не включает код для обеспечения безопасности

Page 5: Adn@it'summer - Изоморфные приложения с React и Redux

5

React — это JavaScript библиотека, которая используется для создания пользовательских интерфейсов

Page 6: Adn@it'summer - Изоморфные приложения с React и Redux

6Структура приложения

public/

htmlString.js

src/

components/

AddTodo.jsx

Todo.jsx

TodoList.jsx

app.js

index.js

server.js

package.json

Page 7: Adn@it'summer - Изоморфные приложения с React и Redux

7App.js

Начальное состояние компонента

Функция добавления новой задачи

Page 8: Adn@it'summer - Изоморфные приложения с React и Redux

8AddTodo.jsx

Функция отправки даных формы. Вызывает callback функции добавления новой задачи

Page 9: Adn@it'summer - Изоморфные приложения с React и Redux

9Server.js

Page 10: Adn@it'summer - Изоморфные приложения с React и Redux

10htmlString.js

Функция, которая рендерит компоненту в html строку

Page 11: Adn@it'summer - Изоморфные приложения с React и Redux

11

Чего не хватаетReact?

Page 12: Adn@it'summer - Изоморфные приложения с React и Redux

12Движение данных

MODEL

MODEL

VIEW

VIEW

VIEW

Page 13: Adn@it'summer - Изоморфные приложения с React и Redux

13

MODEL

MODEL

VIEW

VIEW

VIEW

Движение данных

Page 14: Adn@it'summer - Изоморфные приложения с React и Redux

14

Flux

Page 15: Adn@it'summer - Изоморфные приложения с React и Redux

15Что же такое Flux?

Action

Dispatcher

Store

View API

Flux — это архитектура, которую команда Facebook использует при работе с React. Это не фреймворк, или библиотека, это новый архитектурный подход, который дополняет React и принцип однонаправленного потока данных.

Page 16: Adn@it'summer - Изоморфные приложения с React и Redux

16Action / Действие

Action

Dispatcher

Store

View API

Действие — это набор методов, которые вызываются из Представлений (или из любых других мест), чтобы отправить Действия Диспетчеру.

Page 17: Adn@it'summer - Изоморфные приложения с React и Redux

17Dispatcher / Диспетчер

Action

Dispatcher

Store

View API

В сущности, Диспетчер — это менеджер всего этого процесса. Это центральный узел вашего приложения. Диспетчер получает на вход действия и рассылает эти действия (и связанные с ними данные) зарегистрированным обработчикам.

Page 18: Adn@it'summer - Изоморфные приложения с React и Redux

18Stores / Хранилища

Action

Dispatcher

Store

View API

Хранилища в Flux управляют состоянием определенных частей предметной области вашего приложения. На более высоком уровне это означает, что Хранилища хранят данные, методы получения этих данных и зарегистрированные в Диспетчере обработчики Действий.

Page 19: Adn@it'summer - Изоморфные приложения с React и Redux

19Controller Views / Представления

Action

Dispatcher

Store

View API

Представления — это всего лишь React-компоненты, которые подписаны на событие «change» и получают состояние приложения из Хранилищ.

Page 20: Adn@it'summer - Изоморфные приложения с React и Redux

20Структура приложения

app/

actions/

AppActions.js

components/

AddTodo.jsx

Todo.jsx

TodoList.jsx

constants/

AppConstants.js

dispatcher/

AppDispatcher.js

stores/

TodoStore.js

App.js

todo.js

Page 21: Adn@it'summer - Изоморфные приложения с React и Redux

21App.js

Обработчик событий изменения Store

Подписываемся на событие изменения Store

Page 22: Adn@it'summer - Изоморфные приложения с React и Redux

22AddTodo.jsx

Обработчик событий отправки форм. Вызывает Action который добавляет задачу

Page 23: Adn@it'summer - Изоморфные приложения с React и Redux

23AppActions.js

Action добавление новой задачи

Page 24: Adn@it'summer - Изоморфные приложения с React и Redux

24TodoStore.js

Обработчик события изменения состояния приложения

Диспетчер, который обрабатывает это событие

Page 25: Adn@it'summer - Изоморфные приложения с React и Redux

25AppDispatcher.js

Диспетчер приложения

Page 26: Adn@it'summer - Изоморфные приложения с React и Redux

26

Зачем менять Flux?

Page 27: Adn@it'summer - Изоморфные приложения с React и Redux

27Проблема №1. Код хранилищ не может быть перезагружен без обнуления состояния.

todos: [`eat`, `sleep`]

addTodo: function(todo) { //add to back

}

todos: [ ]

addTodo: function(todo) { //add to front

}

todos: [`eat`, `sleep`]

addTodo: function(todo) { //add to back

}

todos: [`eat`, `sleep`]

addTodo: function(todo) { //add to front

}

Page 28: Adn@it'summer - Изоморфные приложения с React и Redux

28

Action 1

State

Action 2 Action 3 Action 1

State 2

Action 2 Action 3

State 2State 1

Проблема №2. Состояние перезаписывается при каждом действии.

Page 29: Adn@it'summer - Изоморфные приложения с React и Redux

29Проблема №3. Нет правильных “мест” для сторонних плагинов.

Log

Store

Dispatcher

StoreStore

Log

Dispatch

Reducer

ReducerReducer

ReducerReducerReducerReducer

Page 30: Adn@it'summer - Изоморфные приложения с React и Redux

30

Redux

Store

Reducer

UIAction Reducer

Reducer

Page 31: Adn@it'summer - Изоморфные приложения с React и Redux

31Структура приложения

app/

actions/

AppActions.js

components/

AddTodo.jsx

Todo.jsx

TodoList.jsx

constants/

AppConstants.js

redusers/

redusers.js

App.js

Todo.js

Page 32: Adn@it'summer - Изоморфные приложения с React и Redux

32App.js

Функция, которая берет значения из глобального Store

Page 33: Adn@it'summer - Изоморфные приложения с React и Redux

33AddTodo.jsx

Обработчик событий отправки форм. Вызывает Action который добавляет задачу

Page 34: Adn@it'summer - Изоморфные приложения с React и Redux

34AppActions.js

Page 35: Adn@it'summer - Изоморфные приложения с React и Redux

35redusers.js

Изменяет Store в зависимости от переданного Action

Page 36: Adn@it'summer - Изоморфные приложения с React и Redux

Технический директор ADN digital studio

Михаил Полев [email protected]

Спасибо за внимание!

goo.gl/d47OoO

Ссылка на презентацию: