SlideShare a Scribd company logo
ИЗОМОРФНЫЕ
ПРИЛОЖЕНИЯ
С REACT
И REDUX
adn.agency
1. Исполняется в различных окружениях
2. Гарантирует одно поведение
3. Справляется с разностью окружений
через абстракции
2Что такое Изоморфный
Javascript?
3Что он нам дает?
1. Мы можем создать изоморфный Web UI
2. Поддерживает SEO
3. Работает как SPA
4. Единая языковая среда
5. Максимально переиспользуемый код
6. Прирост производительности на старте
4Что он нам не дает?
1. Не работает с хранилищами, работает
как правило с RESTfull API
2. Чаще всего используется для Web UI
3. Не включает код для обеспечения
безопасности
5
React — это JavaScript
библиотека, которая
используется для
создания
пользовательских
интерфейсов
6Структура приложения
public/
htmlString.js
src/
components/
AddTodo.jsx
Todo.jsx
TodoList.jsx
app.js
index.js
server.js
package.json
7App.js
Начальное состояние
компонента
Функция добавления новой
задачи
8AddTodo.jsx
Функция отправки даных
формы. Вызывает callback
функции добавления новой
задачи
9Server.js
10htmlString.js
Функция, которая рендерит
компоненту в html строку
11
Чего 

не хватает

React?
12Движение данных
MODEL
MODEL
VIEW
VIEW
VIEW
13
MODEL
MODEL
VIEW
VIEW
VIEW
Движение данных
14
Flux
15Что же такое Flux?
Action
Dispatcher
Store
View API
Flux — это архитектура,
которую команда Facebook
использует при работе с
React. Это не фреймворк, 

или библиотека, это новый
архитектурный подход,
который дополняет React 

и принцип однонаправленного
потока данных.
16Action / Действие
Action
Dispatcher
Store
View API
Действие — это набор
методов, которые
вызываются из
Представлений (или из
любых других мест),
чтобы отправить
Действия Диспетчеру.
17Dispatcher / Диспетчер
Action
Dispatcher
Store
View API
В сущности, Диспетчер
— это менеджер всего
этого процесса. Это
центральный узел
вашего приложения.
Диспетчер получает 

на вход действия 

и рассылает эти
действия (и связанные 

с ними данные)
зарегистрированным
обработчикам.
18Stores / Хранилища
Action
Dispatcher
Store
View API
Хранилища в Flux управляют
состоянием определенных
частей предметной области
вашего приложения. 

На более высоком уровне
это означает, что Хранилища
хранят данные, методы
получения этих данных 

и зарегистрированные 

в Диспетчере обработчики
Действий.
19Controller Views / Представления
Action
Dispatcher
Store
View API
Представления — это всего
лишь React-компоненты,
которые подписаны 

на событие «change» 

и получают состояние
приложения из Хранилищ.
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
21App.js
Обработчик событий изменения
Store
Подписываемся на событие
изменения Store
22AddTodo.jsx
Обработчик событий отправки
форм. Вызывает Action который
добавляет задачу
23AppActions.js
Action добавление новой задачи
24TodoStore.js
Обработчик события изменения
состояния приложения
Диспетчер, который
обрабатывает это событие
25AppDispatcher.js
Диспетчер приложения
26
Зачем
менять
Flux?
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
}
28
Action 1
State
Action 2 Action 3 Action 1
State 2
Action 2 Action 3
State 2State 1
Проблема №2. Состояние перезаписывается при
каждом действии.
29Проблема №3. Нет правильных “мест” для сторонних
плагинов.
Log
Store
Dispatcher
StoreStore
Log
Dispatch
Reducer
ReducerReducer
ReducerReducerReducerReducer
30
Redux
Store
Reducer
UIAction Reducer
Reducer
31Структура приложения
app/
actions/
AppActions.js
components/
AddTodo.jsx
Todo.jsx
TodoList.jsx
constants/
AppConstants.js
redusers/
redusers.js
App.js
Todo.js
32App.js
Функция, которая берет
значения из глобального Store
33AddTodo.jsx
Обработчик событий отправки
форм. Вызывает Action который
добавляет задачу
34AppActions.js
35redusers.js
Изменяет Store в зависимости
от переданного Action
Технический директор ADN digital studio
Михаил Полев
mihail@adn.agency
Спасибо
за внимание!
goo.gl/d47OoO
Ссылка на презентацию:
37
hi@adn.agency

More Related Content

PPTX
введение в Laravel 5
ODP
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
PDF
Разработка Enterprise-приложения на основе Spring Framework
PPTX
Konstantin slisenko - Spring Framework
PPTX
ASP.NET MVC 3 Anton Vidishchev
PDF
Using redux in Angular applications
PPT
Spring in java
PDF
техно трендмилл 2015
введение в Laravel 5
ZFConf 2011: Создание REST-API для сторонних разработчиков и мобильных устрой...
Разработка Enterprise-приложения на основе Spring Framework
Konstantin slisenko - Spring Framework
ASP.NET MVC 3 Anton Vidishchev
Using redux in Angular applications
Spring in java
техно трендмилл 2015

Viewers also liked (20)

PPTX
myTarget: Mobile 2016
PPTX
SxSW 2015: Key Insights
PPT
Brand boost by wildtangent
PPT
Brand boost by wildtangent
PPTX
Newsletter №116
PDF
Кейс ABBYY PDF Transformer+
PDF
Бизнес-завтрак "Недвижимость: возможности digital-маркетинга, которые больше ...
PDF
Carrie Bradshaw is Back: Sarah Jessica Parker + Cosmopolitan #CannesLions 201...
PDF
Dalee Pharma
PPTX
CV (Curriculum Vitae) - Ulrike Schulz
PDF
What's Next in Social... — Social Data & Insight
PDF
Notamedia_about us
PDF
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
PPTX
Москва, которой нет
PDF
Бизнес-завтрак "Недвижимость: возможности digital-маркетинга, которые больше ...
PPTX
A brand A Story A Channel An Audience?
PDF
Андрей Волков. Радио «КАПИТАН ОЧЕВИДНОСТЬ»
PDF
Alexander Alexeev Interview
PDF
Hemlock Grove. A Digital Strategy.
PPTX
Как геопозиционирование помогает вашему бизнесу. От карт до сервисов.
myTarget: Mobile 2016
SxSW 2015: Key Insights
Brand boost by wildtangent
Brand boost by wildtangent
Newsletter №116
Кейс ABBYY PDF Transformer+
Бизнес-завтрак "Недвижимость: возможности digital-маркетинга, которые больше ...
Carrie Bradshaw is Back: Sarah Jessica Parker + Cosmopolitan #CannesLions 201...
Dalee Pharma
CV (Curriculum Vitae) - Ulrike Schulz
What's Next in Social... — Social Data & Insight
Notamedia_about us
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Москва, которой нет
Бизнес-завтрак "Недвижимость: возможности digital-маркетинга, которые больше ...
A brand A Story A Channel An Audience?
Андрей Волков. Радио «КАПИТАН ОЧЕВИДНОСТЬ»
Alexander Alexeev Interview
Hemlock Grove. A Digital Strategy.
Как геопозиционирование помогает вашему бизнесу. От карт до сервисов.
Ad

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

PPTX
129155выываывавыываываываываываываыв7.pptx
PDF
LvivJS 2014 - Win-win c React.js
PPT
RichFaces: обзор
PDF
MWWM
PPTX
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
PPTX
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
PDF
FrontDays #1. Алексей Ульянов, React.js и методологии разработки на нём
PPTX
Redux и изоморфные приложения
PDF
C# Web. Занятие 11.
PDF
redux: the best for isomorphic apps
PDF
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
PDF
Артем Тритяк, Lead Front-End developer в Electric Cloud
PPTX
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
PDF
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
PPTX
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
PPT
Лекция 4
PDF
Оптимизация react+redux приложений | Odessa Frontend Meetup #7
PPTX
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
PPT
Yii rit 2010
PDF
Spring Boot Ripper
129155выываывавыываываываываываываыв7.pptx
LvivJS 2014 - Win-win c React.js
RichFaces: обзор
MWWM
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
FrontDays #1. Алексей Ульянов, React.js и методологии разработки на нём
Redux и изоморфные приложения
C# Web. Занятие 11.
redux: the best for isomorphic apps
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
Артем Тритяк, Lead Front-End developer в Electric Cloud
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Разработка Windows 8 приложений глазами WPF/Silverlight программиста
Лекция 4
Оптимизация react+redux приложений | Odessa Frontend Meetup #7
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Yii rit 2010
Spring Boot Ripper
Ad

More from ADN Digital Studio (6)

PDF
ADN @ UI/UX Design Meetup Barnaul - «Эволюция процессов проектирования в веб-...
PDF
ADN @ UI/UX Design Meetup Barnaul - «Проектирование с точки зрения дизайна»
PDF
ADN @ UI/UX Design Meetup Barnaul - «Проектирование. Причины, инструменты, пр...
PPTX
Интернет-маркетинг в 2016 году
PDF
Что такое адаптивный сайт и кому он нужен
PPTX
Корпоративный сайт нашего времени: лучшие технологии «1С-Битрикс» для бизнеса
ADN @ UI/UX Design Meetup Barnaul - «Эволюция процессов проектирования в веб-...
ADN @ UI/UX Design Meetup Barnaul - «Проектирование с точки зрения дизайна»
ADN @ UI/UX Design Meetup Barnaul - «Проектирование. Причины, инструменты, пр...
Интернет-маркетинг в 2016 году
Что такое адаптивный сайт и кому он нужен
Корпоративный сайт нашего времени: лучшие технологии «1С-Битрикс» для бизнеса

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