Что изучать: Angular или React?

By 11.08.2019 Август 15th, 2019 Вопросы
После предыдущей статьи меня попросили рассказать о своем опыте изучения JS фреймворков, какой из них удобней и с чего начинать.
Насущный вопрос: что изучать React или Angular?
Это все равно, что спросить: «какой язык лучше C++ или Java», «что удобней windows или linux».
Если кратко — нужно знать оба и применять каждый в конкретной ситуации. Тем более, если вы будете знать TypeScript — вам останется только понять работу самих фреймворков, а это не так сложно.

* Vue.js пока не будем рассматривать, т.к. сильно проигрывает по популярности первым двум.

Более важный вопрос:

В какой последовательности изучать и на что именно обратить внимание?

Мой опыт 

Расскажу как это было у меня, у вас может быть свой опыт.
  1. Сначала я изучил Angular для веб приложений и всю внутреннюю архитектуру
  2. После этого принялся изучать принципы «реактивного программирования» (в данном случае для TypeScript), т.к все это активно использовалось в Angular
  3. Затем взялся за Angular Ionic для мобильных приложений. Почти то же самое, что и создание веб приложения, те же принципы + специфика для разных экранов
  4. Изучил React для веб приложений (ReactJS)
  5. Перешел на React Native (для мобильных приложений)
Помогло то, что у меня за плечами уже был опыт разработки на JavaEE, Spring, Android, поэтому многие моменты были сильно знакомыми.
 

В итоге что сейчас использую

Angular — для веб приложений и PWA (веб приложение, которое выглядит и работает как мобильное).
React Native — для нативных мобильных приложений (здесь победа однозначно за React, его движок удобнее и быстрее).
***
Когда вы узнаете обе технологии, сами для себя выберите, что вам удобней в каждом конкретном случае.
Со временем приоритеты могут меняться, т.к. фреймворки развиваются, но в данный момент пока так.

Сравнение фреймворков «по шапкам» (для веб приложений)

Angular
  • это фреймворк — а значит задает правила создания веб приложений, устанавливает определенные рамки — меньше думать новичку — на начальном этапе плюс
  • много функционала «из коробки», бери и пользуйся. Если нужно что-то дополнительно — можно подключать сторонние модули
  • Больше следует концепции MVC (отделение внешнего вида от логики, обработки действий пользователя)
  • HTML хорошо отделен от остальной логики (легче верстать готовый дизайн в свое приложение)
  • Большой упор на TypeScript и ООП (TS в любом случае нужно знать, если хотите выжить в современном IT мире)
React
  • больше библиотека, а не фреймворк (изначально создавалась для работы с UI)
  • более универсальный, т.к. не зажат рамками фреймворка — больше плюс для профи, не для новичков
  • Многие основные возможности, которые есть у Angular «из коробки», тут приходится подключать отдельно (в этом подходе есть свои плюсы и минусы, для новичков это скорее минус, т.к. лишние движения)
  • Больше ориентирован на JavaScript, чем на TypeScript (хотя с каждой версией все больше поддержка TS)
  • Удобней для создания нативных мобильных приложений Android и iOS
  • Огромное количество сторонних библиотек на все случаи жизни (больше, чем у Angular)

Графики популярности

Многие любят показывать графики популярности фреймворков, где React выигрывает в 2-3 раза у Angular.
Но он сильно выигрывает за счет создания мобильных приложений (React Native), т.к. у него это более удобно реализовано по сравнению с Angular Ionic.
Что касается возможностей для веб приложений (ReactJS) — тут уже не все так однозначно.
Например, для веб приложений мне удобней использовать Angular, чем ReactJS.
Вы можете сами поиграться и посравнивать разные направления или технологии. Для этого вводите несколько ключевых слов в google trends и он вам будет рисовать красивые графики.
Еще пример (для всех, кто говорит, что Java умирает)

Реактивное программирование (РП)

Многие, как и я, до изучения Angular или React не сильно изучали тему реактивного программирования.
Теперь вам точно придется все это выучить. Ничего сложного нет, а возможности РП предоставляет большие.
Любое приложения работает с данными, а если делать это с помощью РП — скорость и удобства увеличиваются.
Уже существуют готовые библиотеки для всех современных языков.
Поэтому все JS фреймворки взяли РП за основу и внедрили его в свое ядро.
Что дает реактивность?
  • Работа с данными (и с любыми действиями) как с потоками
  • слежение за изменением данных и автоматическое обновление везде, они где используется
  • асинхронность
  • удобство API
  • Меньше требуется кода, чем если это реализовывать стандартным способом (циклы, условия, переменные)
На первый взгляд наверно ниче непонятно, поэтому просто запомните — без этого сейчас никуда, это такой же тренд, как и Angular, React, TypeScript и пр.
Примеры и подробный обзор РП будут в отдельной статье.

Выводы

Изучать нужно как Angular, так и React — друг за другом. У обоих свои плюсы и минусы.
Новичкам сначала советую Angular, т.к.все необходимое доступно «из коробки», сложнее будет сделать неверный шаг (фреймворк проконтролирует).
После Angular — можете браться за направления ReactJS и React Native.
Либо можете сразу перейти к React Native, если вам нужны только мобильные приложения.
По сути вам нужно будет просто узнать особенности фреймворков и все. Остальные знания — универсальные (ООП, TypeScript, РП)
Чтобы выучить сам фреймворк — достаточно 1-2 недель и вы уже сможете создавать несложные веб приложения.
Нажмите на кнопки ниже, чтобы поделиться с друзьями:

Author Тимур Батыршинов

Основатель обучающего центра «JavaBegin». Главный тренер. Обучил более 46000 человек (онлайн и оффлайн), провел более 900 онлайн-вебинаров. Опыт разработки на Java и других языках — более 15 лет. Автор более 50 курсов по разным направлениям Java: основы, веб, Android, Spring, iOS, Angular, React и многие другие. Все курсы автора

More posts by Тимур Батыршинов

12
Оставить комментарий

  Подписаться  
Уведомление о
Сергей

здравствуйте. можно ли оздавать приложения без реактивного стиля написания кода?

Арон

Мне на работе говорят сразу изучай реакт, он лучше. Вы говорите сначала изучайте ангуляр. Не знаю за что браться.. Кому верить?

Вера

Спасибо! Полезно)

Никита

значит angular ionic изучать не нужно? сразу изучать react native?

Исма

Почему вы недолюбливаете vue? хороший фреймворк, удобный

Ислам

Здравствуйте.

Спасибо за статью.

Не совсем понятно, если мне нужны только мобильные приложения, я могу не изучать Angular? А сразу перейти на React Native?

Кирилл

я так пробовал, сразу изучить React Native — по сути тот же React, только с особенностями для смартфонов. Выучив одно, легко поймете и другое.