SlideShare a Scribd company logo
ПОДХОДЫ И ТЕХНОЛОГИИ
в React Redux
РЕКОМЕНДАЦИИ ПО ВЫБОРУ ТЕХНОЛОГИЙ И ПОДХОДОВ
Андрей Лазарев
Lead Software Engineer at
Innovecs
12 лет в разработке
10 лет в разработке программных
продуктов
3 года создания проектов на React
2
Введение
Что такое продукт
Решение задач
Подходы к созданию React проектов
Выбор технологий для React проекта
Советы по выбору
3 Innovecs. All rights reserved
2018
Что такое продукт
Продукт !== Код
Время и стоимость создания продукта
Инструменты производства
Технический долг
4 Innovecs. All rights reserved
2018
Продукт — произведение труда, законченный
результат некоторой деятельности
Решение задач
5
Сторонние технологии,
инструменты и модули
Подходы решения задач
в React / Redux
Подходы к
созданию
React
проектов
МОДУЛЬНАЯ СТРУКТУРА
УМНЫЕ И ГЛУПЫЕ КОМПОНЕНТЫ
СТРОГАЯ ТИПИЗАЦИЯ
REDUX
УТИНАЯ ТИПИЗАЦИЯ (DUCK)
ФУНКЦИЯ ВЫСШЕГО ПОРЯДКА (HOC)
6 Innovecs. All rights reserved
2018
Модульная структура
Модуль —
функционально
законченный фрагмент
программы.
Модульное
программирование —
это организация программы как
совокупности небольших
независимых блоков,
называемых модулями,
структура и поведение которых
подчиняются определенным
правилам.
7 Innovecs. All rights reserved
2018
Умные и глупые компоненты
8 Innovecs. All rights reserved
2018
Строгая типизация
Smart и Dump
компоненты
PropTypes
DefaultProp
s
ESDock
<Component {…props} />
_ { }
/
9 Innovecs. All rights reserved
2018
Использование Redux
Redux –
это инструмент
управления как
состоянием данных, так и
состоянием интерфейса.
Единственный
источник истины
Состояние
доступно только
для чтения
Изменения делаются
«чистыми» функциями
Innovecs. All rights reserved
2018
10
Утиная типизация (Duck)
Если это выглядит как утка,
плавает как утка и крякает как
утка, то это, возможно, и есть
утка
Группировка actionTypes,
actions, reducer
Необходимо использовать
export default функции reducer()
Необходимо экспортировать
action creater как функции
Необходимо использовать action types
в виде npm-module-or-app/reducer/
ACTION_TYPE
Можно экспортировать action types в
виде UPPER_SNAKE_CASE для
использования в внешних редюсерах
или переиспользования библиотеки
9
Функция Высшего Порядка (HOC)
- это функция которая может принимать в качестве аргументов другие
функции и/или возвращать функции.
class BirthdayPresents extends Components {}
export default compose(
connect(mapState, mapDispatch),
withUsers,
withBirthday,
withFetchPresents,
withToys,
withoutBlue,
withEmpty,
withStyles
)(BirthdayPresents);
12 Innovecs. All rights reserved
2018
Работы с данными, а не с JSX
Зависимость от порядка вызова
Зависимость аргументов от результатов
выполнения других HOC
Перезапись значений другими функциями
Выбор технологий
для React проекта
УСТАНОВКА И НАСТРОЙКА СБОРКИ ПРОЕКТА
Innovecs. All rights reserved
2018
BOILERPLATE
RECOMPOSE
REACT MATERIAL UI
13
Установка и
настройка
сборки
проекта
Установка пакетов с
помощью npm, Bower
Подключение jQuery
ииспользование
ES5
Сборка с помощью
Webpack, Gulp, Grunt
Использование Boilerplates
Настройка стилей
SASS/SCSS, LESS, JSS, inline
CSS
НЕ ДЕЛАЙТЕ ТАК!
14 Innovecs. All rights reserved
2018
Recompose
HOC – Higher-order components
Pure
shouldUpdate
Compose
renderNothing
15 Innovecs. All rights reserved
2018
export default compose(
connect(mapState, mapDispatch),
pure()
)(Component);
Material UI
ДОСТОИНСТВА НЕДОСТАТКИ
Начальная скорость разработки
Список компонентов
Иконочные шрифты
Интеграция в Redux Form
Серверный рендеринг
Сложность расширения
Сложность кастомизации
Inline стили
Использование px
Наличие багов
16 Innovecs. All rights reserved
2018
Советы по выбору
Проведите анализ
текущего проекта
Составьте список
проблем
Определите, что можете
улучшить, оптимизировать
Определите
приоритеты и
критерии оценки
Выберите
технологи
и
Начнит
е
проект
17 Innovecs. All rights reserved
2018
Андрей Лазарев
lazarev911
andrii.lazariev@innovecs.com
www.linkedin.com/in/andrey-lazarev
СКАЧАТЬ
Innovecs. All rights reserved
2018

More Related Content

Similar to Подходы и технологии в React Redux

[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
Alexander Bausk
 
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
2013-04-06 01 Максим Юнусов. Архитектура в agile-проектеОмские ИТ-субботники
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design Patterns
Andrey Gordienkov
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)
Andrey Gordienkov
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
Andrii Gakhov
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
Архитектура в Agile проекте
Архитектура в Agile проектеАрхитектура в Agile проекте
Архитектура в Agile проекте
LuxoftTraining
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 
Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
AvitoTech
 
Секрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноСекрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдно
CUSTIS
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
UA Mobile
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
Artsofte IT company
 
Rempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментовRempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментов
Roman Dvornov
 
Yehor Nazarkin "Journey to the distributed task queue"
Yehor Nazarkin "Journey to the distributed task queue"Yehor Nazarkin "Journey to the distributed task queue"
Yehor Nazarkin "Journey to the distributed task queue"
OdessaPyConference
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важно
Bubon Makabra
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
Roman Dvornov
 
Why Drupal. Виктор Левандовский.
Why Drupal. Виктор Левандовский.Why Drupal. Виктор Левандовский.
Why Drupal. Виктор Левандовский.DrupalCampDN
 

Similar to Подходы и технологии в React Redux (20)

[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)[RU] Connecting AutoCAD and Python (by Alex Bausk)
[RU] Connecting AutoCAD and Python (by Alex Bausk)
 
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
 
Sef2009
Sef2009Sef2009
Sef2009
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design Patterns
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Архитектура в Agile проекте
Архитектура в Agile проектеАрхитектура в Agile проекте
Архитектура в Agile проекте
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
 
Секрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдноСекрет производства: программный продукт, за который не будет стыдно
Секрет производства: программный продукт, за который не будет стыдно
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
 
Tdd php
Tdd phpTdd php
Tdd php
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
 
Rempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментовRempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментов
 
Yehor Nazarkin "Journey to the distributed task queue"
Yehor Nazarkin "Journey to the distributed task queue"Yehor Nazarkin "Journey to the distributed task queue"
Yehor Nazarkin "Journey to the distributed task queue"
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важно
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Why Drupal. Виктор Левандовский.
Why Drupal. Виктор Левандовский.Why Drupal. Виктор Левандовский.
Why Drupal. Виктор Левандовский.
 

More from Innovecs

Building Efficient and High Performing iLottery Solutions
Building Efficient and High Performing iLottery SolutionsBuilding Efficient and High Performing iLottery Solutions
Building Efficient and High Performing iLottery Solutions
Innovecs
 
Innovecs Meetup Lifestory
Innovecs Meetup LifestoryInnovecs Meetup Lifestory
Innovecs Meetup Lifestory
Innovecs
 
Redux vs RxJS vs Mobx в связке с React
Redux vs RxJS vs Mobx в связке с ReactRedux vs RxJS vs Mobx в связке с React
Redux vs RxJS vs Mobx в связке с React
Innovecs
 
Web Platform for Fashion Shop
Web Platform for Fashion ShopWeb Platform for Fashion Shop
Web Platform for Fashion Shop
Innovecs
 
Programmatic Advertising Platform
Programmatic Advertising PlatformProgrammatic Advertising Platform
Programmatic Advertising Platform
Innovecs
 
Multimedia Newsroom
Multimedia NewsroomMultimedia Newsroom
Multimedia Newsroom
Innovecs
 
Media Buying Platform (DSP+DPM)
Media Buying Platform (DSP+DPM)Media Buying Platform (DSP+DPM)
Media Buying Platform (DSP+DPM)
Innovecs
 
Web-based Shipment Application
Web-based Shipment ApplicationWeb-based Shipment Application
Web-based Shipment Application
Innovecs
 
Digital Trading Platform
Digital Trading PlatformDigital Trading Platform
Digital Trading Platform
Innovecs
 
Mobile Insurance Agent
Mobile Insurance AgentMobile Insurance Agent
Mobile Insurance Agent
Innovecs
 
Online Learning Platform
Online Learning PlatformOnline Learning Platform
Online Learning Platform
Innovecs
 
Client Bank
Client BankClient Bank
Client Bank
Innovecs
 
Fertility Tracking App
Fertility Tracking AppFertility Tracking App
Fertility Tracking App
Innovecs
 
Warranty Wallet App
Warranty Wallet AppWarranty Wallet App
Warranty Wallet App
Innovecs
 
Online Bingo Game
Online Bingo GameOnline Bingo Game
Online Bingo Game
Innovecs
 
Secure Messenger
Secure MessengerSecure Messenger
Secure Messenger
Innovecs
 
Search Data Platform
Search Data PlatformSearch Data Platform
Search Data Platform
Innovecs
 
Website Builder for Insurance Agents
Website Builder for Insurance AgentsWebsite Builder for Insurance Agents
Website Builder for Insurance Agents
Innovecs
 
United Trading Platform
United Trading PlatformUnited Trading Platform
United Trading Platform
Innovecs
 
Match3 Game
Match3 GameMatch3 Game
Match3 Game
Innovecs
 

More from Innovecs (20)

Building Efficient and High Performing iLottery Solutions
Building Efficient and High Performing iLottery SolutionsBuilding Efficient and High Performing iLottery Solutions
Building Efficient and High Performing iLottery Solutions
 
Innovecs Meetup Lifestory
Innovecs Meetup LifestoryInnovecs Meetup Lifestory
Innovecs Meetup Lifestory
 
Redux vs RxJS vs Mobx в связке с React
Redux vs RxJS vs Mobx в связке с ReactRedux vs RxJS vs Mobx в связке с React
Redux vs RxJS vs Mobx в связке с React
 
Web Platform for Fashion Shop
Web Platform for Fashion ShopWeb Platform for Fashion Shop
Web Platform for Fashion Shop
 
Programmatic Advertising Platform
Programmatic Advertising PlatformProgrammatic Advertising Platform
Programmatic Advertising Platform
 
Multimedia Newsroom
Multimedia NewsroomMultimedia Newsroom
Multimedia Newsroom
 
Media Buying Platform (DSP+DPM)
Media Buying Platform (DSP+DPM)Media Buying Platform (DSP+DPM)
Media Buying Platform (DSP+DPM)
 
Web-based Shipment Application
Web-based Shipment ApplicationWeb-based Shipment Application
Web-based Shipment Application
 
Digital Trading Platform
Digital Trading PlatformDigital Trading Platform
Digital Trading Platform
 
Mobile Insurance Agent
Mobile Insurance AgentMobile Insurance Agent
Mobile Insurance Agent
 
Online Learning Platform
Online Learning PlatformOnline Learning Platform
Online Learning Platform
 
Client Bank
Client BankClient Bank
Client Bank
 
Fertility Tracking App
Fertility Tracking AppFertility Tracking App
Fertility Tracking App
 
Warranty Wallet App
Warranty Wallet AppWarranty Wallet App
Warranty Wallet App
 
Online Bingo Game
Online Bingo GameOnline Bingo Game
Online Bingo Game
 
Secure Messenger
Secure MessengerSecure Messenger
Secure Messenger
 
Search Data Platform
Search Data PlatformSearch Data Platform
Search Data Platform
 
Website Builder for Insurance Agents
Website Builder for Insurance AgentsWebsite Builder for Insurance Agents
Website Builder for Insurance Agents
 
United Trading Platform
United Trading PlatformUnited Trading Platform
United Trading Platform
 
Match3 Game
Match3 GameMatch3 Game
Match3 Game
 

Подходы и технологии в React Redux

  • 1. ПОДХОДЫ И ТЕХНОЛОГИИ в React Redux РЕКОМЕНДАЦИИ ПО ВЫБОРУ ТЕХНОЛОГИЙ И ПОДХОДОВ
  • 2. Андрей Лазарев Lead Software Engineer at Innovecs 12 лет в разработке 10 лет в разработке программных продуктов 3 года создания проектов на React 2
  • 3. Введение Что такое продукт Решение задач Подходы к созданию React проектов Выбор технологий для React проекта Советы по выбору 3 Innovecs. All rights reserved 2018
  • 4. Что такое продукт Продукт !== Код Время и стоимость создания продукта Инструменты производства Технический долг 4 Innovecs. All rights reserved 2018 Продукт — произведение труда, законченный результат некоторой деятельности
  • 5. Решение задач 5 Сторонние технологии, инструменты и модули Подходы решения задач в React / Redux
  • 6. Подходы к созданию React проектов МОДУЛЬНАЯ СТРУКТУРА УМНЫЕ И ГЛУПЫЕ КОМПОНЕНТЫ СТРОГАЯ ТИПИЗАЦИЯ REDUX УТИНАЯ ТИПИЗАЦИЯ (DUCK) ФУНКЦИЯ ВЫСШЕГО ПОРЯДКА (HOC) 6 Innovecs. All rights reserved 2018
  • 7. Модульная структура Модуль — функционально законченный фрагмент программы. Модульное программирование — это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам. 7 Innovecs. All rights reserved 2018
  • 8. Умные и глупые компоненты 8 Innovecs. All rights reserved 2018
  • 9. Строгая типизация Smart и Dump компоненты PropTypes DefaultProp s ESDock <Component {…props} /> _ { } / 9 Innovecs. All rights reserved 2018
  • 10. Использование Redux Redux – это инструмент управления как состоянием данных, так и состоянием интерфейса. Единственный источник истины Состояние доступно только для чтения Изменения делаются «чистыми» функциями Innovecs. All rights reserved 2018 10
  • 11. Утиная типизация (Duck) Если это выглядит как утка, плавает как утка и крякает как утка, то это, возможно, и есть утка Группировка actionTypes, actions, reducer Необходимо использовать export default функции reducer() Необходимо экспортировать action creater как функции Необходимо использовать action types в виде npm-module-or-app/reducer/ ACTION_TYPE Можно экспортировать action types в виде UPPER_SNAKE_CASE для использования в внешних редюсерах или переиспользования библиотеки 9
  • 12. Функция Высшего Порядка (HOC) - это функция которая может принимать в качестве аргументов другие функции и/или возвращать функции. class BirthdayPresents extends Components {} export default compose( connect(mapState, mapDispatch), withUsers, withBirthday, withFetchPresents, withToys, withoutBlue, withEmpty, withStyles )(BirthdayPresents); 12 Innovecs. All rights reserved 2018 Работы с данными, а не с JSX Зависимость от порядка вызова Зависимость аргументов от результатов выполнения других HOC Перезапись значений другими функциями
  • 13. Выбор технологий для React проекта УСТАНОВКА И НАСТРОЙКА СБОРКИ ПРОЕКТА Innovecs. All rights reserved 2018 BOILERPLATE RECOMPOSE REACT MATERIAL UI 13
  • 14. Установка и настройка сборки проекта Установка пакетов с помощью npm, Bower Подключение jQuery ииспользование ES5 Сборка с помощью Webpack, Gulp, Grunt Использование Boilerplates Настройка стилей SASS/SCSS, LESS, JSS, inline CSS НЕ ДЕЛАЙТЕ ТАК! 14 Innovecs. All rights reserved 2018
  • 15. Recompose HOC – Higher-order components Pure shouldUpdate Compose renderNothing 15 Innovecs. All rights reserved 2018 export default compose( connect(mapState, mapDispatch), pure() )(Component);
  • 16. Material UI ДОСТОИНСТВА НЕДОСТАТКИ Начальная скорость разработки Список компонентов Иконочные шрифты Интеграция в Redux Form Серверный рендеринг Сложность расширения Сложность кастомизации Inline стили Использование px Наличие багов 16 Innovecs. All rights reserved 2018
  • 17. Советы по выбору Проведите анализ текущего проекта Составьте список проблем Определите, что можете улучшить, оптимизировать Определите приоритеты и критерии оценки Выберите технологи и Начнит е проект 17 Innovecs. All rights reserved 2018