SlideShare a Scribd company logo
1 of 19
Roman Iakobchuk
Lifestreet
Real-life React
Як я прийшов в Реакт
Мені необхідно було:
• Швидкий фреймворк
• Зручність роботи з залежними станами
• Масштабуємість компонентів
• Рішення, що уживатиметься з чим завгодно
А, якщо чесно
• Мені було нуднувато
• Я вчив функціональне програмування
• Реакт був цікавою новинкою
Реакт в стилі FRP
• Надійно: чисті функції, іммутабельні данні
• Прозоро: декларативний опис UI і бізнес-логіки
• Цікаво: прекрасно ламає мозок
Universal apps
• Унікально: неочевидно (чи недосяжно) в інших фреймворках
• Перспективно: все більше проектів в такому форматі
• Цікаво: можливість створювати best-practice
Who cares?
• Хто писав FRP-логіку?
• Хто розробляв додатки з серверним рендерингом?
• Хто робить на React дійсно складні проекти?
Які у вас повсякденні задачі?
• Розробка простих SPA: те що вчора було звичайним сайтом
• Розумні компоненти: чати, менюшки, редактори…
• Підтримка legacy-коду
Інколи React - не ваш варіант
• Класичний SPA
• Багато імперативних взаємодій
• Задача вирішується за годину з jQuery
• Важливі переходи між станами, наприклад анімації
• В команді немає хороших програмістів
Що відбувається з командою
• Заперечення
• Гнів
• Торг
• Депресія
• Прийняття
Найбільша проблема
Все не так сумно
Історія одного “неправильного” вибору
Як з’їсти слона
• Величезний Legacy проект
• Технології, котрі вже рік тому не бажали підтримувати
• Бажання зберегти мінімальний технологічний стек
• Команда прекрасних розробників
Коли Реакт - ідеальне рішення
• Багато дрібних компонент
• Набір слабкозалежних розумних компонентів
• Коли данних значно більше, ніж UI
• Для складних задач, що потребують низькорівневих рішень
SPA на React
Cons:
• Довга дорога до першого результату
• Скільки розробників, стільки й підходів
• Багато бойлер-плейту
Pros:
• Гнучкість
• Швидкість
• Реюзабельність
Злодійський план
• Давайте зробимо один апп на Реакті
• Давайте виділимо розумні компоненти і використаємо всюди
• Давайте поріжемо це на дрібні компонентики і зробимо свою бібліотеку
• У нас якось багато елементів на Реакті, давайте все на ньому робити
Результат
• Всі нові проекти пишуться на Реакті
• Велика кількість складних компонентів переписується на Реакт
• Створюється бібліотека стандартних компонентів
• Створюється стандартизований data-layer на основі immutable.js
Висновки
Pros:
• Можливість використовувати де завгодно
• Можливість поступового переїзду
• Широкий (найширший?) спектр застосування
Cons:
• Високий поріг входу
• Дуже багато писати руками
• Відсутність стандартів
Найважливіша порада
Завжди, завжди, завжди пишіть propTypes
Робіть круті проекти
Роман Якобчук
Skype: r.iakobchuk
Email: r.iakobchuk@gmail.com
http://roma.if.ua

More Related Content

Viewers also liked

Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"
Fwdays
 

Viewers also liked (19)

Евгений Жарков AngularJS: Good parts
Евгений Жарков AngularJS: Good partsЕвгений Жарков AngularJS: Good parts
Евгений Жарков AngularJS: Good parts
 
"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец"Spring Boot. Boot up your development" Сергей Моренец
"Spring Boot. Boot up your development" Сергей Моренец
 
Сергей Жук "Android Performance Tips & Tricks"
Сергей Жук "Android Performance Tips & Tricks"Сергей Жук "Android Performance Tips & Tricks"
Сергей Жук "Android Performance Tips & Tricks"
 
Андрей Шумада | Tank.ly
Андрей Шумада | Tank.ly Андрей Шумада | Tank.ly
Андрей Шумада | Tank.ly
 
Скрам и Канбан: применимость самых распространенных методов организации умств...
Скрам и Канбан: применимость самых распространенных методов организации умств...Скрам и Канбан: применимость самых распространенных методов организации умств...
Скрам и Канбан: применимость самых распространенных методов организации умств...
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
 
Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"Илья Прукко: "Как дизайнеру не становиться художником"
Илья Прукко: "Как дизайнеру не становиться художником"
 
Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"Michael North "The Road to Native Web Components"
Michael North "The Road to Native Web Components"
 
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений" Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
Александр Махомет "Feature Flags. Уменьшаем риски при выпуске изменений"
 
Designing for Privacy
Designing for PrivacyDesigning for Privacy
Designing for Privacy
 
Александр Воронов | Building CLI with Swift
Александр Воронов | Building CLI with SwiftАлександр Воронов | Building CLI with Swift
Александр Воронов | Building CLI with Swift
 
"Frameworks in 2015" Андрей Листочкин
"Frameworks in 2015" Андрей Листочкин"Frameworks in 2015" Андрей Листочкин
"Frameworks in 2015" Андрей Листочкин
 
Fighting Fat Models (Богдан Гусев)
Fighting Fat Models (Богдан Гусев)Fighting Fat Models (Богдан Гусев)
Fighting Fat Models (Богдан Гусев)
 
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Швейцарія, масштабування Scrum і розподілені команди от Романа СахароваШвейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
 
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан..."После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
 
Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"Евгений Обрезков "Behind the terminal"
Евгений Обрезков "Behind the terminal"
 
Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)Lightweight APIs in mRuby (Михаил Бортник)
Lightweight APIs in mRuby (Михаил Бортник)
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностьюТрансформация команды: от инди разработки к играм с коммерческой успешностью
Трансформация команды: от инди разработки к играм с коммерческой успешностью
 

Similar to Роман Якобчук "Real-life React"

Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Іван Дзямулич “AppStore – як стартанути і розвиватись?”Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Lviv Startup Club
 

Similar to Роман Якобчук "Real-life React" (20)

JS Lab`16. Роман Якобчук: "React в реальной жизни"
JS Lab`16. Роман Якобчук: "React в реальной жизни"JS Lab`16. Роман Якобчук: "React в реальной жизни"
JS Lab`16. Роман Якобчук: "React в реальной жизни"
 
Java script + extjs
Java script + extjsJava script + extjs
Java script + extjs
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Іван Дзямулич “AppStore – як стартанути і розвиватись?”Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Іван Дзямулич “AppStore – як стартанути і розвиватись?”
 
Right Tool for the Job: Як правильно вибрати мову програмування
Right Tool for the Job: Як правильно вибрати мову програмуванняRight Tool for the Job: Як правильно вибрати мову програмування
Right Tool for the Job: Як правильно вибрати мову програмування
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. Howto
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
 
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
 
Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)Актуальні курси з мого арсеналу (Бабич О.В.)
Актуальні курси з мого арсеналу (Бабич О.В.)
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
 
Ember.js. Init...
Ember.js. Init...Ember.js. Init...
Ember.js. Init...
 
Як робити рефакторинг в продукті з бурхливою історією
Як робити рефакторинг в продукті з бурхливою історієюЯк робити рефакторинг в продукті з бурхливою історією
Як робити рефакторинг в продукті з бурхливою історією
 
Багаті спадкоємці, або як робити рефакторинг у продукті з бурхливою історією....
Багаті спадкоємці, або як робити рефакторинг у продукті з бурхливою історією....Багаті спадкоємці, або як робити рефакторинг у продукті з бурхливою історією....
Багаті спадкоємці, або як робити рефакторинг у продукті з бурхливою історією....
 
cpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basicscpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basics
 
Android: Інструменти програміста
Android: Інструменти програмістаAndroid: Інструменти програміста
Android: Інструменти програміста
 
Віталій Подоба. “Складний Кейс: Віддалений, Між-Часовий, Part-Time менеджмент”
Віталій Подоба. “Складний Кейс: Віддалений, Між-Часовий, Part-Time менеджмент”Віталій Подоба. “Складний Кейс: Віддалений, Між-Часовий, Part-Time менеджмент”
Віталій Подоба. “Складний Кейс: Віддалений, Між-Часовий, Part-Time менеджмент”
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
 
Jenkins CI (ukr)
Jenkins CI (ukr)Jenkins CI (ukr)
Jenkins CI (ukr)
 

More from Fwdays

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Роман Якобчук "Real-life React"

  • 2. Як я прийшов в Реакт Мені необхідно було: • Швидкий фреймворк • Зручність роботи з залежними станами • Масштабуємість компонентів • Рішення, що уживатиметься з чим завгодно
  • 3. А, якщо чесно • Мені було нуднувато • Я вчив функціональне програмування • Реакт був цікавою новинкою
  • 4. Реакт в стилі FRP • Надійно: чисті функції, іммутабельні данні • Прозоро: декларативний опис UI і бізнес-логіки • Цікаво: прекрасно ламає мозок
  • 5. Universal apps • Унікально: неочевидно (чи недосяжно) в інших фреймворках • Перспективно: все більше проектів в такому форматі • Цікаво: можливість створювати best-practice
  • 6. Who cares? • Хто писав FRP-логіку? • Хто розробляв додатки з серверним рендерингом? • Хто робить на React дійсно складні проекти?
  • 7. Які у вас повсякденні задачі? • Розробка простих SPA: те що вчора було звичайним сайтом • Розумні компоненти: чати, менюшки, редактори… • Підтримка legacy-коду
  • 8. Інколи React - не ваш варіант • Класичний SPA • Багато імперативних взаємодій • Задача вирішується за годину з jQuery • Важливі переходи між станами, наприклад анімації • В команді немає хороших програмістів
  • 9. Що відбувається з командою • Заперечення • Гнів • Торг • Депресія • Прийняття
  • 11. Все не так сумно Історія одного “неправильного” вибору
  • 12. Як з’їсти слона • Величезний Legacy проект • Технології, котрі вже рік тому не бажали підтримувати • Бажання зберегти мінімальний технологічний стек • Команда прекрасних розробників
  • 13. Коли Реакт - ідеальне рішення • Багато дрібних компонент • Набір слабкозалежних розумних компонентів • Коли данних значно більше, ніж UI • Для складних задач, що потребують низькорівневих рішень
  • 14. SPA на React Cons: • Довга дорога до першого результату • Скільки розробників, стільки й підходів • Багато бойлер-плейту Pros: • Гнучкість • Швидкість • Реюзабельність
  • 15. Злодійський план • Давайте зробимо один апп на Реакті • Давайте виділимо розумні компоненти і використаємо всюди • Давайте поріжемо це на дрібні компонентики і зробимо свою бібліотеку • У нас якось багато елементів на Реакті, давайте все на ньому робити
  • 16. Результат • Всі нові проекти пишуться на Реакті • Велика кількість складних компонентів переписується на Реакт • Створюється бібліотека стандартних компонентів • Створюється стандартизований data-layer на основі immutable.js
  • 17. Висновки Pros: • Можливість використовувати де завгодно • Можливість поступового переїзду • Широкий (найширший?) спектр застосування Cons: • Високий поріг входу • Дуже багато писати руками • Відсутність стандартів
  • 19. Робіть круті проекти Роман Якобчук Skype: r.iakobchuk Email: r.iakobchuk@gmail.com http://roma.if.ua