SlideShare a Scribd company logo
Создание масштабируемого приложения
используя React и Typescript
Владислав Плотник
Владислав Плотник
Обо мне
 .NET Team Lead в Sigma Software
 Опыт построения веб приложений с помощью AngularJS и React
 Domain driven design и архитектура микросервисов
Масштабируемое JavaScript приложение
Позволяет:
 Легко добавлять новый функционал
 Удобно взаимодействовать с общим кодом
 Повторно использовать и рефакторить код
 Сократить время вхождения для новых разработчиков
 Просто тестировать код
Выбор стека технологий
Выбор стека технологий
 Цель разработки приложения
 React
 TypeScript
JavaScript – обманчиво простой язык
JavaScript – обманчиво простой язык
 Функциональный стиль
 Вариативность функций
 Динамическая типизация
Dot.net building scalable java script application using react and typescript, Влад Плотнік
Статическая типизация
Плюсы:
 Улучшает читаемость кода
 Надежный рефакторинг кода
 Предоставляет лучше поддержу в IDE
 Раннее обнаружение ошибок в коде
Минусы:
 Необходимость учить новые конструкции языка
 Необходимость писать дополнительный код
JavaScript flavors
https://2018.stateofjs.com/javascript-flavors/overview/
TypeScript
 Расширяет возможности языка JavaScript
 Поддерживает новые стандарты ECMAScript
 Можно использовать вместе с существующим JavaScript кодом
 Удобные инструменты для отладки и рефакторинга
 Разрабатывается и поддерживается Microsoft
Flow
 Flow – это не компилятор языка, а статический анализатор кода
 Объявление простейших типов идентично TypeScript
 Имеет более тесную интеграцию с React
 Разрабатывается и поддерживается Facebook
Что же выбрать?
 TypeScript и Flow очень сильно влияют друг на друга
 Обе технологии поддерживают React
 Обе технологии включают разнообразные типы (объединение, пересечение и обобщение)
 Flow проще интегрировать с существующим JS кодом
 TypeScript имеет лучше интеграцию со сторонними библиотеками
Пример TypeScript кода
Управление состоянием приложения
Управление состоянием приложения
Redux – контейнер для управления состоянием
Демо
Модульная структура кода
Плюсы:
 Разделяет код приложения по функциональному признаку
 Улучшает читаемость кода
 Упрощает рефакторинг кода
Минусы:
 Требуется предварительная подготовка и анализ домена
Типизация состояния
Плюсы:
 Описывает данные, которыми оперирует приложение
 Упрощает поддержку кода и работу в команде
Минусы:
 Дополнительная работа по определению типов
Типизация actions и action creators
Плюсы:
 Использование констант для объявления actions
 Использование типа union позволяет избежать ошибок при создании recuder функций
 Существенно упрощается рефакторинг кода
Минусы:
 Дополнительная работа по определению типов
Композиция reducer функций
Плюсы:
 Каждый модуль определяет свое состояние
 Независимое управление различными доменами данных
Минусы:
 Дополнительная работа по объединению состояния всех модулей
Типизация компонентов
Плюсы:
 Улучшается читаемость кода
 Использование типов повышает удобство работы в команде
Минусы:
 Необходимость писать дополнительный код
Производительность приложения
 Измеряйте Render Times
 Используйте Production Build
 Избегайте лишних перерисовок компонентов
 React.PureComponent
 shouldComponentUpdate()
Выводы
 Команда быстро изучила и успешно применяет выбранные технологии
 Стек технологий позволил успешно масштабировать приложение после выпуска MVP версии
 Использование Redux сделало предсказуемым обновление состояния приложения
 Строгая типизация обеспечивает раннее выявление ошибок, связанных с типом данных
 Удобство работы позволило команде лучше сфокусироваться на потребностях бизнеса
 Удалось избежать появления технического долга
Спасибо за внимание!
Полезные ссылки:
 Код приложения https://github.com/vladplotnik/realworld-react-redux-typescript
 TypeScript https://www.typescriptlang.org
 React https://reactjs.org
 Redux https://redux.js.org
Как со мной связаться:
Skype: vlad.plotnik
Email: vladyslav.plotnyk@sigma.software
Ad

Recommended

FlAnalyzer
FlAnalyzer
Denis Radin
 
Эффективная архитектура мобильной автоматизации
Эффективная архитектура мобильной автоматизации
ISsoft
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
GetDev.NET
 
презетация Visual basic
презетация Visual basic
kseniya_kristina
 
Flex code quality measurement tools
Flex code quality measurement tools
Valery
 
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
Selenium 2 WebDriver + Selenide + Java с и без использования BDD, сравнительн...
COMAQA.BY
 
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Sigma Software
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
Andrew Mayorov
 
Selenium. Stas Kuzminov
Selenium. Stas Kuzminov
ADCI Solutions
 
Обзор средств сопровождения процесса разработки и тестирования (HP QC, Jira).
Обзор средств сопровождения процесса разработки и тестирования (HP QC, Jira).
DressTester
 
Алексей Кабанов
Алексей Кабанов
SQALab
 
Azure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребности
Александр Шамрай
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контроль
Александр Шамрай
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестирование
Александр Шамрай
 
Профессиональное управление распределенными проектами
Профессиональное управление распределенными проектами
Evgeny Savitsky
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Vadim Martynov
 
Интегрированная среда разработки
Интегрированная среда разработки
spillector
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
Dotnet development
Dotnet development
MageCloud
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Ruby on Rails снижаем стоимость разработки
Ruby on Rails снижаем стоимость разработки
Media Gorod
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
it-people
 
Автоматизированное тестирование мобильных приложений
Автоматизированное тестирование мобильных приложений
Транслируем.бел
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Особенности тестирования веб приложение
Особенности тестирования веб приложение
DressTester
 
Azure - введение
Azure - введение
Alexander Babich
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov
 
Подходы и технологии в React Redux
Подходы и технологии в React Redux
Innovecs
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
Ontico
 

More Related Content

What's hot (20)

Selenium. Stas Kuzminov
Selenium. Stas Kuzminov
ADCI Solutions
 
Обзор средств сопровождения процесса разработки и тестирования (HP QC, Jira).
Обзор средств сопровождения процесса разработки и тестирования (HP QC, Jira).
DressTester
 
Алексей Кабанов
Алексей Кабанов
SQALab
 
Azure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребности
Александр Шамрай
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контроль
Александр Шамрай
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестирование
Александр Шамрай
 
Профессиональное управление распределенными проектами
Профессиональное управление распределенными проектами
Evgeny Savitsky
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Vadim Martynov
 
Интегрированная среда разработки
Интегрированная среда разработки
spillector
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
Dotnet development
Dotnet development
MageCloud
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
Ruby on Rails снижаем стоимость разработки
Ruby on Rails снижаем стоимость разработки
Media Gorod
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
it-people
 
Автоматизированное тестирование мобильных приложений
Автоматизированное тестирование мобильных приложений
Транслируем.бел
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Особенности тестирования веб приложение
Особенности тестирования веб приложение
DressTester
 
Azure - введение
Azure - введение
Alexander Babich
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov
 
Selenium. Stas Kuzminov
Selenium. Stas Kuzminov
ADCI Solutions
 
Обзор средств сопровождения процесса разработки и тестирования (HP QC, Jira).
Обзор средств сопровождения процесса разработки и тестирования (HP QC, Jira).
DressTester
 
Алексей Кабанов
Алексей Кабанов
SQALab
 
Azure DevOps Адаптация под собственные потребности
Azure DevOps Адаптация под собственные потребности
Александр Шамрай
 
Azure DevOps Управление проектом и версионный контроль
Azure DevOps Управление проектом и версионный контроль
Александр Шамрай
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестирование
Александр Шамрай
 
Профессиональное управление распределенными проектами
Профессиональное управление распределенными проектами
Evgeny Savitsky
 
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.
Vadim Martynov
 
Интегрированная среда разработки
Интегрированная среда разработки
spillector
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
Dotnet development
Dotnet development
MageCloud
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
Ruby on Rails снижаем стоимость разработки
Ruby on Rails снижаем стоимость разработки
Media Gorod
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
it-people
 
Автоматизированное тестирование мобильных приложений
Автоматизированное тестирование мобильных приложений
Транслируем.бел
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Особенности тестирования веб приложение
Особенности тестирования веб приложение
DressTester
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Pavel Tsukanov
 

Similar to Dot.net building scalable java script application using react and typescript, Влад Плотнік (20)

Подходы и технологии в React Redux
Подходы и технологии в React Redux
Innovecs
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
Ontico
 
React & Redux (Lazarev)
React & Redux (Lazarev)
Innovecs
 
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
MoscowJS
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
redux: the best for isomorphic apps
redux: the best for isomorphic apps
Denis Izmaylov
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
ScrumTrek
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
Denis Izmaylov
 
Adn@it'summer - Изоморфные приложения с React и Redux
Adn@it'summer - Изоморфные приложения с React и Redux
ADN Digital Studio
 
Коротко о React.js
Коротко о React.js
Mad Devs
 
Angular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей Александров
EatDog
 
Redux и изоморфные приложения
Redux и изоморфные приложения
John Wezel
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON
 
Фишки и прелести TypeScript
Фишки и прелести TypeScript
Александр Майоров
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
it-people
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal
Fwdays
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 
Tech talk Angular 2
Tech talk Angular 2
DA-14
 
Подходы и технологии в React Redux
Подходы и технологии в React Redux
Innovecs
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
Ontico
 
React & Redux (Lazarev)
React & Redux (Lazarev)
Innovecs
 
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
MoscowJS
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
redux: the best for isomorphic apps
redux: the best for isomorphic apps
Denis Izmaylov
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
ScrumTrek
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
Denis Izmaylov
 
Adn@it'summer - Изоморфные приложения с React и Redux
Adn@it'summer - Изоморфные приложения с React и Redux
ADN Digital Studio
 
Коротко о React.js
Коротко о React.js
Mad Devs
 
Angular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей Александров
EatDog
 
Redux и изоморфные приложения
Redux и изоморфные приложения
John Wezel
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
it-people
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal
Fwdays
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 
Tech talk Angular 2
Tech talk Angular 2
DA-14
 
Ad

More from Sigma Software (20)

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
Sigma Software
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
Sigma Software
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
Sigma Software
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Sigma Software
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
Sigma Software
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Sigma Software
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Sigma Software
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Sigma Software
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Sigma Software
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Sigma Software
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Sigma Software
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINT
Sigma Software
 
Business digitalization trends and challenges
Business digitalization trends and challenges
Sigma Software
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Sigma Software
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Sigma Software
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Sigma Software
 
Training solutions and content creation
Training solutions and content creation
Sigma Software
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
Sigma Software
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Sigma Software
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Sigma Software
 
Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
Sigma Software
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
Sigma Software
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
Sigma Software
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Sigma Software
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
Sigma Software
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Sigma Software
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Sigma Software
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Sigma Software
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Sigma Software
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Sigma Software
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Sigma Software
 
Business digitalization trends and challenges
Business digitalization trends and challenges
Sigma Software
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Sigma Software
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Sigma Software
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Sigma Software
 
Training solutions and content creation
Training solutions and content creation
Sigma Software
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
Sigma Software
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Sigma Software
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Sigma Software
 
Ad

Dot.net building scalable java script application using react and typescript, Влад Плотнік

  • 1. Создание масштабируемого приложения используя React и Typescript Владислав Плотник Владислав Плотник
  • 2. Обо мне  .NET Team Lead в Sigma Software  Опыт построения веб приложений с помощью AngularJS и React  Domain driven design и архитектура микросервисов
  • 3. Масштабируемое JavaScript приложение Позволяет:  Легко добавлять новый функционал  Удобно взаимодействовать с общим кодом  Повторно использовать и рефакторить код  Сократить время вхождения для новых разработчиков  Просто тестировать код
  • 5. Выбор стека технологий  Цель разработки приложения  React  TypeScript
  • 6. JavaScript – обманчиво простой язык
  • 7. JavaScript – обманчиво простой язык  Функциональный стиль  Вариативность функций  Динамическая типизация
  • 9. Статическая типизация Плюсы:  Улучшает читаемость кода  Надежный рефакторинг кода  Предоставляет лучше поддержу в IDE  Раннее обнаружение ошибок в коде Минусы:  Необходимость учить новые конструкции языка  Необходимость писать дополнительный код
  • 11. TypeScript  Расширяет возможности языка JavaScript  Поддерживает новые стандарты ECMAScript  Можно использовать вместе с существующим JavaScript кодом  Удобные инструменты для отладки и рефакторинга  Разрабатывается и поддерживается Microsoft
  • 12. Flow  Flow – это не компилятор языка, а статический анализатор кода  Объявление простейших типов идентично TypeScript  Имеет более тесную интеграцию с React  Разрабатывается и поддерживается Facebook
  • 13. Что же выбрать?  TypeScript и Flow очень сильно влияют друг на друга  Обе технологии поддерживают React  Обе технологии включают разнообразные типы (объединение, пересечение и обобщение)  Flow проще интегрировать с существующим JS кодом  TypeScript имеет лучше интеграцию со сторонними библиотеками
  • 17. Redux – контейнер для управления состоянием
  • 19. Модульная структура кода Плюсы:  Разделяет код приложения по функциональному признаку  Улучшает читаемость кода  Упрощает рефакторинг кода Минусы:  Требуется предварительная подготовка и анализ домена
  • 20. Типизация состояния Плюсы:  Описывает данные, которыми оперирует приложение  Упрощает поддержку кода и работу в команде Минусы:  Дополнительная работа по определению типов
  • 21. Типизация actions и action creators Плюсы:  Использование констант для объявления actions  Использование типа union позволяет избежать ошибок при создании recuder функций  Существенно упрощается рефакторинг кода Минусы:  Дополнительная работа по определению типов
  • 22. Композиция reducer функций Плюсы:  Каждый модуль определяет свое состояние  Независимое управление различными доменами данных Минусы:  Дополнительная работа по объединению состояния всех модулей
  • 23. Типизация компонентов Плюсы:  Улучшается читаемость кода  Использование типов повышает удобство работы в команде Минусы:  Необходимость писать дополнительный код
  • 24. Производительность приложения  Измеряйте Render Times  Используйте Production Build  Избегайте лишних перерисовок компонентов  React.PureComponent  shouldComponentUpdate()
  • 25. Выводы  Команда быстро изучила и успешно применяет выбранные технологии  Стек технологий позволил успешно масштабировать приложение после выпуска MVP версии  Использование Redux сделало предсказуемым обновление состояния приложения  Строгая типизация обеспечивает раннее выявление ошибок, связанных с типом данных  Удобство работы позволило команде лучше сфокусироваться на потребностях бизнеса  Удалось избежать появления технического долга
  • 26. Спасибо за внимание! Полезные ссылки:  Код приложения https://github.com/vladplotnik/realworld-react-redux-typescript  TypeScript https://www.typescriptlang.org  React https://reactjs.org  Redux https://redux.js.org Как со мной связаться: Skype: vlad.plotnik Email: [email protected]