SlideShare a Scribd company logo
1 of 14
Инструменты для разработки
изоморфных приложений
JavaScript
Преимущества изоморфных
приложений
• Один язык для сервера и клиента
• Первоначальный render любого маршрута
на сервере
• Быстрый переход между страницами
• Хорошо индексируется поисковыми
системами, даже при отключенном
JavaScript
• Скорость разработки
Структура изоморфного приложения
Сервер Клиент
Первый запуск, страница
рендерится на сервере
Присылаются все данные и скрипты
После отрисовки, клиент просчитывает состояние приложения
и сравнивает контрольную сумму, если все ок, то отображение готово
Дальше, обмен данными между приложением и сервером осуществляется
при помощи API
React JS - приемущества
• Его задача View
• Весь DOM рендерится в памяти
• При любом изменении состояния приложения, все потомки
элементов которые изменились, пересчитываются в памяти и
рендерятся только изменения
• При использовании immutable массивов и объектов, происходит
мгновенное сравнение, изменились ли они, даже если изменения
очень глубоко внутри
• Html элементы пишутся в одном jsx файле, стили к компоненту в less
или scss импортируются тут же. Куски html можно хранить в
переменных.
• Все данные приходят из одного единственного хранилища Flux
Flux – что такое
Преемущества Flux
• Одно хранилище = один источник правды
• Все изменения состояния происходят только через Action, которые
проходят через один единственный dispatcher
• Асинхронные операции тоже проводятся через Action
• Все данные получают «Умные компоненты React» которые
подключены к хранилищу, они транслируют всем своим потомкам
«глупым компонентам» через props
• Если хранилище не менялось, то перерисовка не происходит
• Использование Immutable значительно ускоряет работу приложения
Redux – реализация flux
• github.com/reackt/redux
• Легко создавать хранилища, actions,
привязка «умных компонентов» к
хранилищам и actions.
• Удобные инструменты для разработки,
позволяющие «путешествовать во
времени».
• Широкое использование ES6, Immutable
Webpack - преимущества
• Система развертывания приложения,
конкатенирует, сжимает, делает sourcemap
• Применяет изменения на лету, не меняя
состояния приложения.
• Стили less можно импортировать командой
require.
PS
• Инструменты которые я использую…
Pomello
Позволяет чередовать работу и отдых и учитывать время затраченное на карточки trello
Использую систему больших Pomodorro: 52 минуты работы, 17 минут отдыха
SmartGit
• Позволяет видеть изменения в файлах Git
посимвольно
F.lux
• Если на улице темно, то убирает синий оттенок с экрана, что
уменьшает уничтожение мелатонина и позволяет быстро уснуть после
вечерних, ночных посиделок
Vim
• Уменьшает кол-во нажатий функциональных
клавиш
• Исключает использование стрелок и перенос
пальцев с основной позиции
• Настраивается абсолютно все,
автодополнение, раскраска, любые горячие
клавиши
• Самый быстрый редактор, есть на любом
сервере
• Уменьшает использование мыши до 0
Droplr
• Позволяет делать скриншоты и копирует
ссылку в буфер обмена
• Позволяет делать скрин-видео

More Related Content

What's hot

webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответDenis Izmaylov
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеDenis Izmaylov
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис РечкуновJSib
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис РечкуновJSib
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo KazymyrovFwdays
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik HimiranovFwdays
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий МантулаFwdays
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Fwdays
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27MoscowJS
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Fwdays
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration Alex Tumanoff
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Ontico
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр АфеновCodeFest
 
Angular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей АлександровAngular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей АлександровEatDog
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Ontico
 

What's hot (19)

webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответ
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27
 
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
Angular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей АлександровAngular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей Александров
 
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
 

Similar to Redux и изоморфные приложения

Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеDenis Chistyakov
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptDenis Latushkin
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym ShestopalFwdays
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Vadim Martynov
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Ontico
 
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  МоскалёвПереводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван МоскалёвYandex
 
Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Provectus
 
Выступление Александра Петрова из DCA (Data-Centric Alliance)
Выступление Александра Петрова из DCA (Data-Centric Alliance)Выступление Александра Петрова из DCA (Data-Centric Alliance)
Выступление Александра Петрова из DCA (Data-Centric Alliance)Антон Шестаков
 

Similar to Redux и изоморфные приложения (20)

Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Sivko
SivkoSivko
Sivko
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на Javascript
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
 
Migrate!
Migrate!Migrate!
Migrate!
 
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  МоскалёвПереводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
Гатиятов Руслан, технический директор ООО “Дроид Лабс”: “Система управления п...
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Выступление Александра Петрова из DCA (Data-Centric Alliance)
Выступление Александра Петрова из DCA (Data-Centric Alliance)Выступление Александра Петрова из DCA (Data-Centric Alliance)
Выступление Александра Петрова из DCA (Data-Centric Alliance)
 
Real time dmp
Real time dmpReal time dmp
Real time dmp
 

Redux и изоморфные приложения

  • 2. Преимущества изоморфных приложений • Один язык для сервера и клиента • Первоначальный render любого маршрута на сервере • Быстрый переход между страницами • Хорошо индексируется поисковыми системами, даже при отключенном JavaScript • Скорость разработки
  • 3. Структура изоморфного приложения Сервер Клиент Первый запуск, страница рендерится на сервере Присылаются все данные и скрипты После отрисовки, клиент просчитывает состояние приложения и сравнивает контрольную сумму, если все ок, то отображение готово Дальше, обмен данными между приложением и сервером осуществляется при помощи API
  • 4. React JS - приемущества • Его задача View • Весь DOM рендерится в памяти • При любом изменении состояния приложения, все потомки элементов которые изменились, пересчитываются в памяти и рендерятся только изменения • При использовании immutable массивов и объектов, происходит мгновенное сравнение, изменились ли они, даже если изменения очень глубоко внутри • Html элементы пишутся в одном jsx файле, стили к компоненту в less или scss импортируются тут же. Куски html можно хранить в переменных. • Все данные приходят из одного единственного хранилища Flux
  • 5. Flux – что такое
  • 6. Преемущества Flux • Одно хранилище = один источник правды • Все изменения состояния происходят только через Action, которые проходят через один единственный dispatcher • Асинхронные операции тоже проводятся через Action • Все данные получают «Умные компоненты React» которые подключены к хранилищу, они транслируют всем своим потомкам «глупым компонентам» через props • Если хранилище не менялось, то перерисовка не происходит • Использование Immutable значительно ускоряет работу приложения
  • 7. Redux – реализация flux • github.com/reackt/redux • Легко создавать хранилища, actions, привязка «умных компонентов» к хранилищам и actions. • Удобные инструменты для разработки, позволяющие «путешествовать во времени». • Широкое использование ES6, Immutable
  • 8. Webpack - преимущества • Система развертывания приложения, конкатенирует, сжимает, делает sourcemap • Применяет изменения на лету, не меняя состояния приложения. • Стили less можно импортировать командой require.
  • 10. Pomello Позволяет чередовать работу и отдых и учитывать время затраченное на карточки trello Использую систему больших Pomodorro: 52 минуты работы, 17 минут отдыха
  • 11. SmartGit • Позволяет видеть изменения в файлах Git посимвольно
  • 12. F.lux • Если на улице темно, то убирает синий оттенок с экрана, что уменьшает уничтожение мелатонина и позволяет быстро уснуть после вечерних, ночных посиделок
  • 13. Vim • Уменьшает кол-во нажатий функциональных клавиш • Исключает использование стрелок и перенос пальцев с основной позиции • Настраивается абсолютно все, автодополнение, раскраска, любые горячие клавиши • Самый быстрый редактор, есть на любом сервере • Уменьшает использование мыши до 0
  • 14. Droplr • Позволяет делать скриншоты и копирует ссылку в буфер обмена • Позволяет делать скрин-видео