SlideShare a Scribd company logo
1 of 18
Тонкости выбора:
Angular vs React vs Angular 2
Александров Сергей
Senior JavaScript Developer
Acceptic
Веб компоненты
(W3C стандарт)
- Custom Elements
- Shadow DOM
- HTML Imports / Templates
КО М П О Н Е Н Т Н Ы Й П ОД ХОД
- Дебаг
- Тестирование
- Документирование
- Комьюнити
- Производительность
- Миграция
- Порог вхождения
- Архитектура
- Синтаксис
- Комплектация
- Изоморфность
- Кроссплатформенность
ЧЕК ЛИСТ
ПОРОГ ВХОЖДЕНИЯ
Angular 1
Легко в учении, тяжело в бою
React
Сам по себе прост, но без зоопарка
вспомогательных утилит бесполезен
Angular 2
Убраны – фабрики, сервисы,
контроллеры. Typescript,
функциональное программирование,
реактивность (RxJS), Redux
или что-то подобное
АРХИТЕКТУРА
Angular 1
Делай что хочешь, как можешь
бардак из фабрик, сервисов,
контроллеров, директив.
React
Flux – совокупность паттернов:
наблюдатель, медиатор, состояние.
Redux – воплощение лучших практик
flux и подходов функционального
программирования.
Angular 2
Пока нет предложенных подходов от Google.
В составе есть EventEmitter, RxJS.
Без проблем можно подружить с Redux.
СИНТАКСИС
Angular 1 React Angular 2
Плюсы:
Чистый JS. Не нужны
компиляторы.
Минусы:
Свои велосипеды для DI,
модульности, куча
абстракций. Component
немного упрощает
синтаксис директив.
“Плохая абстракция, лучше
чем отсутствие абстракции.”
Плюсы:
Современный ES.
Минималистичный API.
Минусы:
Мешанина бизнес логики
и представления (частично
вопрос решает Redux
вынося логику в редюсеры).
Плюсы:
TypeScript и типизация,
HTML отдельно,
стили отдельно,
современный ES.
Минусы:
TypeScript не стандарт,
нельзя использовать
выражения в шаблоне.
КОМПЛЕКТАЦИЯ
Angular 1 React Angular 2
+ средства для тестирования + средства для тестирования
TypeScript
Typings
System.js
BrowserSync
RxJS
Плюсы:
Имеем структуру
Минусы:
Сложнее кастомизировать
ИЗОМОРФНОСТЬ
Angular 1 React Angular 2
100% изоморфный.
Ссылка на пример приложения
в 50 строк делающей полную
изоморфность без изменений
приложения, будет доступна на
последнем слайде.
Не изоморфный
Фреймворк.
КРОССПЛАТФОРМЕННОСТЬ
Angular 1 React Angular 2
Очень гибкий.
Работает с Phonegap, Ionic,
Electron, NW.js
без проблем.
Имеет кучу модулей.
React-Native – разработка
С использованием
Нативных компонент.
Также можно завернуть
во что угодно.
Интеграция в Ionic 2.
ДЕБАГ
Angular 1 React Angular 2
Отлов ошибок на этапе
компиляции.
Batarangle.
В лучшем случае – красная
консоль.
В худшем – ничего.
Angular Batarang и прочие.
Отлов ошибок на этапе
компиляции.
Redux devtools покажет
состояние системы.
Redux middlewares для дебага.
ТЕСТИРОВАНИЕ
Angular 1
React
Angular 2
Angular Protractor, Interceptors.
Любые фреймверки.
Любые фреймверки.
Enzyme.
С Redux легче тестировать.
Спец утилит пока нет.
ДОКУМЕНТИРОВАНИЕ
Angular 1 React Angular 2
JSDoc, ESDoc. ESDoc, JSDoc
поддерживает JSX.
ESDoc, JSDoc
поддерживает typescript.
КОМЬЮНИТИ
Angular 1 React Angular 2
У всех трех решений огромная поддержка первоклассных специалистов.
Ответ почти на любой вопрос можно нагуглить.
Angular 2 из-за своего молодого возраста немного уступает.
React более сплочено подходит к формированию комъюнити.
https://github.com/reactjs
ПРОИЗВОДИТЕЛЬНОСТЬ
Angular 1
React
- setState
- Виртуальный дом
- Иммутабельность
Angular 2
- Zone.js, ChangeDetector cycle
- Виртуальный дом
- Иммутабельность
- Digest cycle, проверка watcher’ов
- Тяжелый апдейт состояния
*Подробный обзор в ссылках
МИГРАЦИЯ
React 0.10  React 0.14 – В течении рабочего дня
перенес большое приложение с сотнями компонентов.
React выводил подсказки по необходимым изменениям.
Angular 1 Angular 2 – без переписывания 75% кода не обойтись.
Для теста решил перенести сайт-визитку, созданную 3 года назад
за 6 часов. Я потратил более 20 часов на миграцию.
Требует изменений бизнес логики.
React 0.14  React 15.0.1 – перенес пару больших приложений,
вообще без проблем.
- Порог вхождения
- Архитектура
- Синтаксис
- Комплектация
- Изоморфность
- Кроссплатформенность
- Дебаг
- Тестирование
- Документирование
- Комъюнити
- Производительность
- Миграция
Angular 1 React Angular 2
?
?
?
В Ы В ОД Ы
ВСЕМ СПАСИБО!
ВОПРОСЫ!
Linkedin
https://github.com/AlexSergey
Skype: sergey.aleksandrov_acceptic
My site
КО Н ТА К Т Ы
П Р И М Е Р Ы И С С Ы Л К И
https://github.com/AlexSergey/eat-dog
https://join.skype.com/Ct9eTgsIFHfk
Ч АТ “ С Ъ ЕС Т Ь С О БА К У ”

More Related Content

What's hot

#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов#5 "React.js" Антон Артамонов
#5 "React.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
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroIgor Izraylevych
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложенияDenis Izmaylov
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRAMBLER&Co
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidAnton Rutkevich
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25MoscowJS
 
Tech talk Angular 2
Tech talk Angular 2Tech talk Angular 2
Tech talk Angular 2DA-14
 
React + Redux. Опыт использования
React + Redux. Опыт использованияReact + Redux. Опыт использования
React + Redux. Опыт использованияGDG Odessa
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidSQALab
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in pythonCOMAQA.BY
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеDenis Izmaylov
 
Android - 06 - Gradle
Android - 06 - GradleAndroid - 06 - Gradle
Android - 06 - GradleNoveo
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответDenis Izmaylov
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеDenis Izmaylov
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleGeeksLab Odessa
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 

What's hot (19)

#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
 
React.js – intro
React.js – introReact.js – intro
React.js – intro
 
"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
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
 
Dagger 2
Dagger 2Dagger 2
Dagger 2
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la RamblerRambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la Rambler
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
Tech talk Angular 2
Tech talk Angular 2Tech talk Angular 2
Tech talk Angular 2
 
React + Redux. Опыт использования
React + Redux. Опыт использованияReact + Redux. Опыт использования
React + Redux. Опыт использования
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in python
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработкеАктуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
 
Android - 06 - Gradle
Android - 06 - GradleAndroid - 06 - Gradle
Android - 06 - Gradle
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответ
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 

Viewers also liked

"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений ЖарковFwdays
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Ontico
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison500Tech
 
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...JSib
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановMoscowJS
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьEatDog
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIEatDog
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshareYour backend architecture is what matters slideshare
Your backend architecture is what matters slideshareColin Charles
 
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)Ontico
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)Binary Studio
 
Investeringsagenda Woonregio Zuidwest Friesland
Investeringsagenda Woonregio Zuidwest Friesland Investeringsagenda Woonregio Zuidwest Friesland
Investeringsagenda Woonregio Zuidwest Friesland Gemeente Barneveld
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Robert DeLuca
 
React vs angular (mobile first battle)
React vs angular (mobile first battle)React vs angular (mobile first battle)
React vs angular (mobile first battle)Michael Haberman
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
 
Stateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWTStateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWTGaurav Roy
 
Angular js vs. Facebook react
Angular js vs. Facebook reactAngular js vs. Facebook react
Angular js vs. Facebook reactKeyup
 

Viewers also liked (20)

"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков
 
Angular 2 vs React
Angular 2 vs ReactAngular 2 vs React
Angular 2 vs React
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
 
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshareYour backend architecture is what matters slideshare
Your backend architecture is what matters slideshare
 
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
 
React vs-angular-mobile
React vs-angular-mobileReact vs-angular-mobile
React vs-angular-mobile
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей Солодовников
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
 
Investeringsagenda Woonregio Zuidwest Friesland
Investeringsagenda Woonregio Zuidwest Friesland Investeringsagenda Woonregio Zuidwest Friesland
Investeringsagenda Woonregio Zuidwest Friesland
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
 
React vs angular (mobile first battle)
React vs angular (mobile first battle)React vs angular (mobile first battle)
React vs angular (mobile first battle)
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
 
Stateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWTStateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWT
 
Angular js vs. Facebook react
Angular js vs. Facebook reactAngular js vs. Facebook react
Angular js vs. Facebook react
 

Similar to Angular vs Angular 2 vs React. Сергей Александров

JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьDenis Izmaylov
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"MskDotNet Community
 
Артем Тритяк, Lead Front-End developer в Electric Cloud
 Артем Тритяк, Lead Front-End developer в Electric Cloud Артем Тритяк, Lead Front-End developer в Electric Cloud
Артем Тритяк, Lead Front-End developer в Electric CloudProvectus
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Pavel Chertorogov
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
"Vue.js или как наконец отказаться от React"
"Vue.js или как наконец отказаться от React""Vue.js или как наконец отказаться от React"
"Vue.js или как наконец отказаться от React"Fwdays
 
развертывание среды 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
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Headless Drupal на примере Drupal 8 и React
Headless Drupal на примере Drupal 8 и ReactHeadless Drupal на примере Drupal 8 и React
Headless Drupal на примере Drupal 8 и ReactDrupalSPB
 
Подходы и технологии в React Redux
Подходы и технологии в React ReduxПодходы и технологии в React Redux
Подходы и технологии в React ReduxInnovecs
 
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...OdessaFrontend
 
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TKConf
 
DWR @ DevClub.eu
DWR @ DevClub.euDWR @ DevClub.eu
DWR @ DevClub.euarsenikum
 

Similar to Angular vs Angular 2 vs React. Сергей Александров (20)

JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальностьJavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 
Артем Тритяк, Lead Front-End developer в Electric Cloud
 Артем Тритяк, Lead Front-End developer в Electric Cloud Артем Тритяк, Lead Front-End developer в Electric Cloud
Артем Тритяк, Lead Front-End developer в Electric Cloud
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
"Vue.js или как наконец отказаться от React"
"Vue.js или как наконец отказаться от React""Vue.js или как наконец отказаться от React"
"Vue.js или как наконец отказаться от React"
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
New Android NDK & JNI
New Android NDK & JNINew Android NDK & JNI
New Android NDK & JNI
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Введение в redux
Введение в reduxВведение в redux
Введение в redux
 
Headless Drupal на примере Drupal 8 и React
Headless Drupal на примере Drupal 8 и ReactHeadless Drupal на примере Drupal 8 и React
Headless Drupal на примере Drupal 8 и React
 
Подходы и технологии в React Redux
Подходы и технологии в React ReduxПодходы и технологии в React Redux
Подходы и технологии в React Redux
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
 
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
 
DWR @ DevClub.eu
DWR @ DevClub.euDWR @ DevClub.eu
DWR @ DevClub.eu
 

More from EatDog

Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? EatDog
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsEatDog
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in KotlinEatDog
 
Быстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKБыстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKEatDog
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous deliveryEatDog
 
Как мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системахКак мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системахEatDog
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластерEatDog
 
Кодстайл и насилие.
Кодстайл и насилие. Кодстайл и насилие.
Кодстайл и насилие. EatDog
 
Refactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorRefactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorEatDog
 
GraphQL: APIs the New Way.
GraphQL: APIs the New Way.GraphQL: APIs the New Way.
GraphQL: APIs the New Way.EatDog
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.EatDog
 
Microservices in a Wild.
Microservices in a Wild.Microservices in a Wild.
Microservices in a Wild.EatDog
 
Dependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksDependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksEatDog
 
Стероиды для Дотнетчика
Стероиды для ДотнетчикаСтероиды для Дотнетчика
Стероиды для ДотнетчикаEatDog
 
Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.EatDog
 
OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.EatDog
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практикеEatDog
 
Mapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыMapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыEatDog
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейEatDog
 
View models for component driven
View models for component drivenView models for component driven
View models for component drivenEatDog
 

More from EatDog (20)

Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем? Классифицируем текст в iOS без CoreML: как и зачем?
Классифицируем текст в iOS без CoreML: как и зачем?
 
macOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizonsmacOS app development for iOS devs: expand your horizons
macOS app development for iOS devs: expand your horizons
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in Kotlin
 
Быстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELKБыстрый в имплементации и в работе мониторинг с использованием ELK
Быстрый в имплементации и в работе мониторинг с использованием ELK
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
Как мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системахКак мы экспериментируем в больших микросервисных системах
Как мы экспериментируем в больших микросервисных системах
 
Отказоустойчивый Redis кластер
Отказоустойчивый Redis кластерОтказоустойчивый Redis кластер
Отказоустойчивый Redis кластер
 
Кодстайл и насилие.
Кодстайл и насилие. Кодстайл и насилие.
Кодстайл и насилие.
 
Refactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project ReactorRefactor to Reactive With Spring 5 and Project Reactor
Refactor to Reactive With Spring 5 and Project Reactor
 
GraphQL: APIs the New Way.
GraphQL: APIs the New Way.GraphQL: APIs the New Way.
GraphQL: APIs the New Way.
 
Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.Большие проекты, архитектура и фреймворки.
Большие проекты, архитектура и фреймворки.
 
Microservices in a Wild.
Microservices in a Wild.Microservices in a Wild.
Microservices in a Wild.
 
Dependency Rejection and TDD without Mocks
Dependency Rejection and TDD without MocksDependency Rejection and TDD without Mocks
Dependency Rejection and TDD without Mocks
 
Стероиды для Дотнетчика
Стероиды для ДотнетчикаСтероиды для Дотнетчика
Стероиды для Дотнетчика
 
Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.Domain Driven Design – просто о сложном.
Domain Driven Design – просто о сложном.
 
OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практике
 
Mapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные картыMapbox GL: как работают современные векторные карты
Mapbox GL: как работают современные векторные карты
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
 
View models for component driven
View models for component drivenView models for component driven
View models for component driven
 

Angular vs Angular 2 vs React. Сергей Александров

  • 1. Тонкости выбора: Angular vs React vs Angular 2 Александров Сергей Senior JavaScript Developer Acceptic
  • 2. Веб компоненты (W3C стандарт) - Custom Elements - Shadow DOM - HTML Imports / Templates
  • 3. КО М П О Н Е Н Т Н Ы Й П ОД ХОД
  • 4. - Дебаг - Тестирование - Документирование - Комьюнити - Производительность - Миграция - Порог вхождения - Архитектура - Синтаксис - Комплектация - Изоморфность - Кроссплатформенность ЧЕК ЛИСТ
  • 5. ПОРОГ ВХОЖДЕНИЯ Angular 1 Легко в учении, тяжело в бою React Сам по себе прост, но без зоопарка вспомогательных утилит бесполезен Angular 2 Убраны – фабрики, сервисы, контроллеры. Typescript, функциональное программирование, реактивность (RxJS), Redux или что-то подобное
  • 6. АРХИТЕКТУРА Angular 1 Делай что хочешь, как можешь бардак из фабрик, сервисов, контроллеров, директив. React Flux – совокупность паттернов: наблюдатель, медиатор, состояние. Redux – воплощение лучших практик flux и подходов функционального программирования. Angular 2 Пока нет предложенных подходов от Google. В составе есть EventEmitter, RxJS. Без проблем можно подружить с Redux.
  • 7. СИНТАКСИС Angular 1 React Angular 2 Плюсы: Чистый JS. Не нужны компиляторы. Минусы: Свои велосипеды для DI, модульности, куча абстракций. Component немного упрощает синтаксис директив. “Плохая абстракция, лучше чем отсутствие абстракции.” Плюсы: Современный ES. Минималистичный API. Минусы: Мешанина бизнес логики и представления (частично вопрос решает Redux вынося логику в редюсеры). Плюсы: TypeScript и типизация, HTML отдельно, стили отдельно, современный ES. Минусы: TypeScript не стандарт, нельзя использовать выражения в шаблоне.
  • 8. КОМПЛЕКТАЦИЯ Angular 1 React Angular 2 + средства для тестирования + средства для тестирования TypeScript Typings System.js BrowserSync RxJS Плюсы: Имеем структуру Минусы: Сложнее кастомизировать
  • 9. ИЗОМОРФНОСТЬ Angular 1 React Angular 2 100% изоморфный. Ссылка на пример приложения в 50 строк делающей полную изоморфность без изменений приложения, будет доступна на последнем слайде. Не изоморфный Фреймворк.
  • 10. КРОССПЛАТФОРМЕННОСТЬ Angular 1 React Angular 2 Очень гибкий. Работает с Phonegap, Ionic, Electron, NW.js без проблем. Имеет кучу модулей. React-Native – разработка С использованием Нативных компонент. Также можно завернуть во что угодно. Интеграция в Ionic 2.
  • 11. ДЕБАГ Angular 1 React Angular 2 Отлов ошибок на этапе компиляции. Batarangle. В лучшем случае – красная консоль. В худшем – ничего. Angular Batarang и прочие. Отлов ошибок на этапе компиляции. Redux devtools покажет состояние системы. Redux middlewares для дебага.
  • 12. ТЕСТИРОВАНИЕ Angular 1 React Angular 2 Angular Protractor, Interceptors. Любые фреймверки. Любые фреймверки. Enzyme. С Redux легче тестировать. Спец утилит пока нет.
  • 13. ДОКУМЕНТИРОВАНИЕ Angular 1 React Angular 2 JSDoc, ESDoc. ESDoc, JSDoc поддерживает JSX. ESDoc, JSDoc поддерживает typescript.
  • 14. КОМЬЮНИТИ Angular 1 React Angular 2 У всех трех решений огромная поддержка первоклассных специалистов. Ответ почти на любой вопрос можно нагуглить. Angular 2 из-за своего молодого возраста немного уступает. React более сплочено подходит к формированию комъюнити. https://github.com/reactjs
  • 15. ПРОИЗВОДИТЕЛЬНОСТЬ Angular 1 React - setState - Виртуальный дом - Иммутабельность Angular 2 - Zone.js, ChangeDetector cycle - Виртуальный дом - Иммутабельность - Digest cycle, проверка watcher’ов - Тяжелый апдейт состояния *Подробный обзор в ссылках
  • 16. МИГРАЦИЯ React 0.10  React 0.14 – В течении рабочего дня перенес большое приложение с сотнями компонентов. React выводил подсказки по необходимым изменениям. Angular 1 Angular 2 – без переписывания 75% кода не обойтись. Для теста решил перенести сайт-визитку, созданную 3 года назад за 6 часов. Я потратил более 20 часов на миграцию. Требует изменений бизнес логики. React 0.14  React 15.0.1 – перенес пару больших приложений, вообще без проблем.
  • 17. - Порог вхождения - Архитектура - Синтаксис - Комплектация - Изоморфность - Кроссплатформенность - Дебаг - Тестирование - Документирование - Комъюнити - Производительность - Миграция Angular 1 React Angular 2 ? ? ? В Ы В ОД Ы
  • 18. ВСЕМ СПАСИБО! ВОПРОСЫ! Linkedin https://github.com/AlexSergey Skype: sergey.aleksandrov_acceptic My site КО Н ТА К Т Ы П Р И М Е Р Ы И С С Ы Л К И https://github.com/AlexSergey/eat-dog https://join.skype.com/Ct9eTgsIFHfk Ч АТ “ С Ъ ЕС Т Ь С О БА К У ”