После предыдущей статьи меня попросили рассказать о своем опыте изучения JS фреймворков, какой из них удобней и с чего начинать.
Насущный вопрос: что изучать React или Angular?
Это все равно, что спросить: «какой язык лучше C++ или Java», «что удобней windows или linux».
Если кратко — нужно знать оба и применять каждый в конкретной ситуации. Тем более, если вы будете знать TypeScript — вам останется только понять работу самих фреймворков, а это не так сложно.
* Vue.js пока не будем рассматривать, т.к. сильно проигрывает по популярности первым двум.
Более важный вопрос:
В какой последовательности изучать и на что именно обратить внимание?
Мой опыт
Расскажу как это было у меня, у вас может быть свой опыт.
- Сначала я изучил Angular для веб приложений и всю внутреннюю архитектуру
- После этого принялся изучать принципы «реактивного программирования» (в данном случае для TypeScript), т.к все это активно использовалось в Angular
- Затем взялся за Angular Ionic для мобильных приложений. Почти то же самое, что и создание веб приложения, те же принципы + специфика для разных экранов
- Изучил React для веб приложений (ReactJS)
- Перешел на 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 для новичков
здравствуйте. можно ли оздавать приложения без реактивного стиля написания кода?
можно, но теряется много «вкусностей»: асинхронное обновление, отсутствие подвисаний и пр.
без РП у вас получится просто красивое «стандартное» веб приложение.
angular изначально создавался под возможности реактивного программирования, поэтому РП нужно знать обязательно (тем более, что там не так много нужно знать)
Мне на работе говорят сразу изучай реакт, он лучше. Вы говорите сначала изучайте ангуляр. Не знаю за что браться.. Кому верить?
ну попробуйте начать и тот и другой, посмотрите что вам будет даваться легче. Потом уже выберите.
angular полегче, т.к. там более менее понятная структура приложения, стандартные HTML, CSS — просто создаете нужные «компоненты» и внедряете их в HTML
В реакт все немного посложнее
Спасибо! Полезно)
значит angular ionic изучать не нужно? сразу изучать react native?
для кругозора можно и тот и тот выучить.
но если время поджимает — можно сразу перейти к React Native
Почему вы недолюбливаете vue? хороший фреймворк, удобный
да, удобный, но мы сейчас говорим про самые передовые технологии, которые пользуются спросом у работодателей и во всем мире.
как показывают графики гугл трендов — react и angular ушли далеко вперед.
vue пока отстает и еще непонятно, что из него выйдет в итоге. Если есть время, можно конечно его изучить, лишним не будет.
Здравствуйте.
Спасибо за статью.
Не совсем понятно, если мне нужны только мобильные приложения, я могу не изучать Angular? А сразу перейти на React Native?
да, можете сразу перейти в React Native
я так пробовал, сразу изучить React Native — по сути тот же React, только с особенностями для смартфонов. Выучив одно, легко поймете и другое.