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

By 11.08.2019 13 декабря, 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 недель и вы уже сможете создавать несложные веб приложения.
Бесплатный курс Angular для новичков

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

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

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

Join the discussion 12 комментариев

  • Сергей:

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

    • можно, но теряется много «вкусностей»: асинхронное обновление, отсутствие подвисаний и пр.
      без РП у вас получится просто красивое «стандартное» веб приложение.
      angular изначально создавался под возможности реактивного программирования, поэтому РП нужно знать обязательно (тем более, что там не так много нужно знать)

  • Арон:

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

    • ну попробуйте начать и тот и другой, посмотрите что вам будет даваться легче. Потом уже выберите.
      angular полегче, т.к. там более менее понятная структура приложения, стандартные HTML, CSS — просто создаете нужные «компоненты» и внедряете их в HTML
      В реакт все немного посложнее

  • Вера:

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

  • Никита:

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

  • Исма:

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

    • да, удобный, но мы сейчас говорим про самые передовые технологии, которые пользуются спросом у работодателей и во всем мире.
      как показывают графики гугл трендов — react и angular ушли далеко вперед.
      vue пока отстает и еще непонятно, что из него выйдет в итоге. Если есть время, можно конечно его изучить, лишним не будет.

  • Ислам:

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

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

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

Leave a Reply