SlideShare a Scribd company logo
Тонкости выбора:
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
Ч АТ “ С Ъ ЕС Т Ь С О БА К У ”
Ad

Recommended

Angular2
Angular2
Sergey Melekhin
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradle
Evgeny Borisov
 
Redux и изоморфные приложения
Redux и изоморфные приложения
John Wezel
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Fwdays
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal
Fwdays
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Fwdays
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
ScrumTrek
 
#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
JSib
 
React.js – intro
React.js – intro
Andrew Makarow
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
Igor Izraylevych
 
Изоморфные react-приложения
Изоморфные react-приложения
Denis Izmaylov
 
Dagger 2
Dagger 2
Kirill Rozov
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la Rambler
RAMBLER&Co
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
Anton Rutkevich
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
Tech talk Angular 2
Tech talk Angular 2
DA-14
 
React + Redux. Опыт использования
React + Redux. Опыт использования
GDG Odessa
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
SQALab
 
selenium stack in python
selenium stack in python
COMAQA.BY
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
Denis Izmaylov
 
Android - 06 - Gradle
Android - 06 - Gradle
Noveo
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответ
Denis Izmaylov
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
Denis Izmaylov
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
GeeksLab Odessa
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov
 
"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков
Fwdays
 
Angular 2 vs React
Angular 2 vs React
Iran Reyes Fleitas
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Ontico
 

More Related Content

What's hot (19)

#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
JSib
 
React.js – intro
React.js – intro
Andrew Makarow
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
Igor Izraylevych
 
Изоморфные react-приложения
Изоморфные react-приложения
Denis Izmaylov
 
Dagger 2
Dagger 2
Kirill Rozov
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la Rambler
RAMBLER&Co
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
Anton Rutkevich
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
Tech talk Angular 2
Tech talk Angular 2
DA-14
 
React + Redux. Опыт использования
React + Redux. Опыт использования
GDG Odessa
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
SQALab
 
selenium stack in python
selenium stack in python
COMAQA.BY
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
Denis Izmaylov
 
Android - 06 - Gradle
Android - 06 - Gradle
Noveo
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответ
Denis Izmaylov
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
Denis Izmaylov
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
GeeksLab Odessa
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov
 
#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
Fwdays
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
Igor Izraylevych
 
Изоморфные react-приложения
Изоморфные react-приложения
Denis Izmaylov
 
Rambler.iOS #5: VIPER a la Rambler
Rambler.iOS #5: VIPER a la Rambler
RAMBLER&Co
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
Anton Rutkevich
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
MoscowJS
 
Tech talk Angular 2
Tech talk Angular 2
DA-14
 
React + Redux. Опыт использования
React + Redux. Опыт использования
GDG Odessa
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
SQALab
 
selenium stack in python
selenium stack in python
COMAQA.BY
 
Актуальные технологии и тренды в веб-разработке
Актуальные технологии и тренды в веб-разработке
Denis Izmaylov
 
Android - 06 - Gradle
Android - 06 - Gradle
Noveo
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответ
Denis Izmaylov
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
Denis Izmaylov
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
GeeksLab Odessa
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov
 

Viewers also liked (20)

"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков
Fwdays
 
Angular 2 vs React
Angular 2 vs React
Iran Reyes Fleitas
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Ontico
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
500Tech
 
#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 - Леонид Ширманов
MoscowJS
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
EatDog
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
EatDog
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshare
Colin Charles
 
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Ontico
 
React vs-angular-mobile
React vs-angular-mobile
Michael Haberman
 
Рендеринг может больше: 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)
Binary Studio
 
Investeringsagenda Woonregio Zuidwest Friesland
Investeringsagenda Woonregio Zuidwest Friesland
Gemeente Barneveld
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
Robert DeLuca
 
React vs angular (mobile first battle)
React vs angular (mobile first battle)
Michael Haberman
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
Ontico
 
Stateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWT
Gaurav Roy
 
Angular js vs. Facebook react
Angular js vs. Facebook react
Keyup
 
"Angular 2: Всех переиграл" Евгений Жарков
"Angular 2: Всех переиграл" Евгений Жарков
Fwdays
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Ontico
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
500Tech
 
#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 - Леонид Ширманов
MoscowJS
 
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
EatDog
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
EatDog
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshare
Colin Charles
 
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Сайт Москвы за 6 месяцев / Игорь Цупко (Notamedia)
Ontico
 
Рендеринг может больше: 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)
Binary Studio
 
Investeringsagenda Woonregio Zuidwest Friesland
Investeringsagenda Woonregio Zuidwest Friesland
Gemeente Barneveld
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
Robert DeLuca
 
React vs angular (mobile first battle)
React vs angular (mobile first battle)
Michael Haberman
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
Ontico
 
Stateless Auth using OAuth2 & JWT
Stateless Auth using OAuth2 & JWT
Gaurav Roy
 
Angular js vs. Facebook react
Angular js vs. Facebook react
Keyup
 
Ad

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

Angular 2 On Production
Angular 2 On Production
Oleksandr Tryshchenko
 
Dot.net building scalable java script application using react and typescript,...
Dot.net building scalable java script application using react and typescript,...
Sigma Software
 
React & Redux (Lazarev)
React & Redux (Lazarev)
Innovecs
 
Angular 2 vs Angular 1
Angular 2 vs Angular 1
GDG Odessa
 
Фишки и прелести TypeScript
Фишки и прелести TypeScript
Александр Майоров
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
Denis Izmaylov
 
Dot.net building scalable java script application using react and typescript,...
Dot.net building scalable java script application using react and typescript,...
Sigma Software
 
React & Redux (Lazarev)
React & Redux (Lazarev)
Innovecs
 
Angular 2 vs Angular 1
Angular 2 vs Angular 1
GDG Odessa
 
JavaScript сегодня: React, Redux и новая реальность
JavaScript сегодня: React, Redux и новая реальность
Denis Izmaylov
 
Ad

More from EatDog (20)

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

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 Ч АТ “ С Ъ ЕС Т Ь С О БА К У ”