React, Vue или Angular: какой фреймворк выбрать заказчику для разработки интерфейса продукта в 2022 году

Современные фреймворки достаточно функциональны и позволяют разработчикам реализовать любую фичу. Их выбор широк, но в этой статье мы рассмотрим 3 самых популярных, которые точно не потеряют свою актуальность в ближайшие несколько лет. Речь пойдет о React, Vue и Angular.

Но прежде чем поговорить о них, ответим на вопрос, чем полезны фреймворки? Во-первых, если, например, CMS предполагает наличие уже готового сайта, который настраивается под ваши нужды, то фреймворки позволяют создавать уникальный набор функций и подходят для нетипичных продуктов. Во-вторых, JavaScript-фреймворки повышают производительность разработчика за счет того, что уже содержат в себе определенные правила, шаблоны и наборы функций.

Фронтенд-тренды 2022 года

Тренды во фронтенд-разработке формируются небыстро: на то, чтобы технология вошла в практику разработчика, может уйти несколько лет. Наш опыт показывает, что с высокой долей вероятности в 2022 году будут актуальны следующие тренды:

  • Выбор клиентов в пользу SPA (single page application) – одностраничных приложений. Их ключевое отличие от многостраничных – переход между страницами не сопровождается их перезагрузкой, что значительно ускоряет работу. Стоит отметить, что они стали актуальны уже достаточно давно и пока нет никаких предпосылок к снижению.
  • Внедрение PWA – прогрессивных веб-приложений. Их ключевое отличие – возможность работать офлайн через браузер, используя закешированные данные. Они могут быть установлены на устройство пользователя и в то же время не занимать большой объем памяти.
  • Применение SSR (server-side rendering) позволяет рендерить контент на стороне сервера, а это ускоряет работу приложения. Но главное его преимущество – сайт может быть проиндексирован поисковыми роботами, значит будет выше в позициях поисковой выдачи.
  • Использование типизации TypeScript во фреймворках. На крупных проектах она позволяет увеличить скорость разработки, выявить ошибки на этапе компиляции, улучшить читабельность кода, тем самым упростить процесс погружения новых разработчиков.

Отдельно стоит сказать про семантическую верстку. Она не имеет отношения к какому-либо фреймворку, но позволяет индексировать сайт в поисковых запросах, а также читать приложение с экрана мобильного устройства.

Исходя из этих трендов, можно с уверенностью говорить, что большинство средних и крупных фронтенд-проектов в 2022 году будут по-прежнему использовать такие JavaScript фреймворки, как React, Vue и Angular. Чтобы определиться с выбором, заказчику важно понимать, насколько востребован фреймворк и найдет ли он соответствующих разработчиков на рынке, для каких проектов его можно применить и как часто предстоит вносить изменения.

React, Vue или Angular: что выбрать для фронтенд-проекта

Популярность фреймворков

Когда в 2010 году Google выпустил Angular, фреймворк произвел революцию, разработчики его оценили. Но производительность на тот момент оставляла желать лучшего. В 2016 году вышел Angular2, написанный с нуля на TypeScript. Эта версия имеет совершенно иную архитектуру, более низкий порог вхождения и качественную документацию с большим количеством примеров.

Среди известных компаний, использующих этот фреймворк – Google, Forbes, PayPal, Upwork и пр.

Почти параллельно с Angular развивался React. Впервые его использовали в новостной ленте Facebook в 2011 году, но исходный код открыли только в 2013 году. Постепенно он набрал хорошую базу, большое количество инструментов и широкую поддержку комьюнити.

React используется для разработки интерфейсов во многих известных компаниях: Facebook, Instagram, Netflix, BBC, Сбербанк, Яндекс и др.

В 2014 году появился Vue.JS. У его истоков стоял бывший сотрудник Google. У фреймворка нет поддержки со стороны крупных компаний в отличие от React и Angular. Но это не помешало третьей версии Vue размещаться в собственном репозитории GitHub и перейти на TypeScript. Это обеспечило им более чистую и удобную архитектуру исходного кода, а также ряд других изменений.

Vue используется, в основном, китайскими гигантами – Alibaba, Tencent, Xiaomi, а также другими крупными компаниями, например, GitLab, Ozon и пр.

Если обратиться к статистике числа загрузок, то React выбирают чаще, чем остальные два фреймворка.

Но по количеству звезд, которые получают репозитории GitHub этих фреймворков, лидирует Vue. Хотя он и не намного опережает React:

Наличие специалистов-разработчиков на рынке труда

Если оценивать популярность рабочих мест с запросом на специалистов в этих фреймворках, данные Google Trends выглядят следующим образом.

Исходя из текущего состояния рынка труда, потребности компаний в разработчиках на Angular или React закрываются. А спрос на специалистов Vue на рынке в два раза меньше.

Области применения и трудозатраты

Angular как фреймворк используется для разработки крупных корпоративных приложений, т.к. ряд архитектурных решений идет из коробки, включая TypeScript. Это с одной стороны, может быть ограничением, а с другой – быстрым решением стандартного кейса. Также есть механизмы DI для удобства тестирования и подмены зависимостей. Angular как фреймворк узкоспециализирован. И порог вхождения в разработку на нем довольно-таки высок. Помимо знаний рядового JS-разработчика, надо хорошо понимать, как устроен этот фреймворк. Возможно, поэтому он не пользуется особой популярностью.

React, по своей сути, является библиотекой и имеет большой арсенал смежных библиотек. Он подходит для решения любой задачи. Его можно применить в MVP, небольших и средних проектах. Поддержка TypeScript поможет в enterprise-разработках. Также его можно выбрать для разработки сайтов с минимальной бизнес-логикой на фронте, так как есть бойлерплейт.

Но в React нет «навязанных» решений из коробки, поэтому потребуются компетентные специалисты с хорошим опытом разработки и знаниями как архитектурных паттернов, так и работы нативного JS (движка, в частности). В противном случае возрастет вероятность появления нерелевантного кода (или, на профессиональном сленге, “костылей”) в проекте.

Vue подходит для средних приложений и MVP. Высокая скорость на старте позволяет сделать MVP за короткие сроки. Масштабируемость приложения Vue поможет также динамично развивать проект. В версии 3.0 есть полноценная поддержка TypeScript. Стоимость старта на этом фреймворке ниже, чем у React за счет удобного CLI и хорошего поддерживаемого набора библиотек из коробки. При этом легкость масштабирования выше, чем у Angular. К тому же, Vue проще для изучения, поэтому компании стали делать больший акцент на найме разработчиков со знанием Vue.

Скорость развития стека и необходимость внесения изменений

Angular выпускает крупные обновления, как правило, раз в полугодие. Поскольку для него характерна зависимость от предыдущих версий и компонентов, у фреймворка существует сервис с подробным описанием для миграции версий. Кроме того, у Angular есть компилятор Ivy, который указывает на ошибки в случае их появления до выполнения кода интерпретатором. В основе фреймворка лежит библиотека RxJs и в принципе функциональный код основан на реактивном программировании, что, в свою очередь, приводит к декларативной парадигме: код легко покрывается unit-тестами, а средства для тестирования идут из коробки.

React достаточно активно меняет общедоступные API и поведение, причем сами обновления через версии, как правило, простые. Поскольку Facebook выступает за стабильность, есть полная совместимость между версиями и возможность подключения к приложению библиотек разных версий.

Динамика развития Vue самая высокая из представленных фреймворков. Модульная система включает в себя все атрибуты JS-фреймворка, работающие с полной обратной совместимостью. А при переходе с одной на другую версию у Vue есть вспомогательный инструмент, который работает на консоли и помогает оценить состояние приложения.

Выводы: какой фреймворк выбрать?

При выборе следует обратить внимание на популярность, наличие специалистов на рынке, области применения, трудозатраты, скорость развития стека, и, что может являться ключевым фактором, требования проекта.

Отвечая на один из любимых вопросов наших клиентов – “На каком фреймворке разрабатывать интерфейс продукта?” мы, в первую очередь, советуем обратить внимание на то, насколько продумана архитектура проекта.

Если она четко продумана и есть понимание конечного вида продукта, наиболее очевидным выбором может стать Angular. В случае, если этого нет или проект является MVP, подойдут React или Vue. А если уже есть команда разработчиков, лучше отталкиваться от их компетенций. Так будет проще определиться с тем, какие специалисты будут нужны на поддержку.

Аккумулируя весь наш опыт разработки, для сложных и масштабных проектов советуем выбирать Angular. React отлично подойдет, когда нужна высокая производительность, а сам проект реализуется в условиях жесткого тайминга. А если вы располагаете минимумом времени на обучение специалистов фреймворку и нужен небольшой проект или MVP, можно смело выбирать Vue.

0
78 комментариев
Написать комментарий...
Mike Espoo

React без всяких размышлений.
Мне многое не нравится в React, но объективно он выиграл эту битву.

Ответить
Развернуть ветку
Sergey Krupskiy

Согласен. Пробовал тыкать Vue чтобы понять что за хайп вокруг него такой пару лет назад, но не зацепило.

Ответить
Развернуть ветку
31 комментарий
Евгений Поляков

В этом списке - точно не React. Он уже сильно устарел, фейсбук его кардинально не улучшает. Рефлексия перед смертью. Берите Vue или Angular2. Я сам пользовался Vue - по сравнению с реакт у него гораздо эффективнее написание кода, а значит вы будете меньше тратить время на одно и то же.

Ответить
Развернуть ветку
Евгений Романов

Т.е. вы не пользовались каждым из фреймворков в коммерческой разработке? Тогда ваше мнение — не что иное, как диванная аналитика

Ответить
Развернуть ветку
1 комментарий
Игорь Карелин

Эм, чем он устарел? Я работал с каждым из этих фреймворков/библиотек. В них нет ничего нового. Vue как обычно ворует у других с отставанием, В ангуляр тоже ничего нового в последних версиях они делают упор на новый движок и пытаются ускорить сборку проекта, только недавно добавили hmr. Собственно и реакт в 17 версии ничего интересного, а вот в реакт 18 будет очень много фич) ИМХО я за реакт у него самое большое комьюнити и много готовых решений, а сточки зрения бизнеса легче найти разработчика.

Ответить
Развернуть ветку
Just4Fun

Vue топ за свои деньги!

Ответить
Развернуть ветку
Artem Petrenkov
У фреймворка нет поддержки со стороны крупных компаний в отличие от React и Angular. Но это не помешало третьей версии Vue размещаться в собственном репозитории GitHub и перейти на TypeScript.

Шта? Как будто за публикацию в GitHub нужно деньги платить.

Ответить
Развернуть ветку
Artem Petrenkov

Vue в краткосрочном периоде выиграл у React по той же причине, по которой React когда-то выиграл у AngularJS: порог вхождения в него значительно меньше, чем у конкурента. Однако это приводит к тому, что в проект могут прийти (и приходят) менее квалифицированные разработчики.

Ответить
Развернуть ветку
Дмитрий Баранов

Разработчикам низкой квалификации прийти в проект — не проблема. Все когда-то работают с фреймворком впервые, и в силу этого — имеют низкую квалификацию

Ответить
Развернуть ветку
Александр Шатилов

Angular отлично подходит для средних и крупных проектов. И тк все из коробки у команды меньше шансов, что-то "изобрести" не так как надо. В тоже время Angular это конструктор где все можно заменить по необходимости. А со второй версии Angular API практически не менялся. А если и менялся, то автоматическая миграция всегда отрабатывала.
Плюс существует одна из лучших UI библиотек https://taiga-ui.dev/

Ответить
Развернуть ветку
Bob Sinclar

Если нужен SSR - не берите Angular, есть конечно Universal, но он плохо работает, а все потому что Ivy - его движок рендеринга, и исполнять его на сервере - выходит с багами.

React вам не нужен, потому что у вас нету проблем, которые хотели решить команда ФБ выпустив его - это реактивный фронт. Вспомните UI Facebook, есть справа снизу чат, который преследует вас во всех страницах, и есть реактивные состояния чата - сколько друзей онлайн, кто пишет вам, рисовать карандашек и тд. В странице где вы показывает данные в табличке - есть ли такая проблема и необходимость?

Ответить
Развернуть ветку
Oleg Garvin

Предлагаете на чистом js писать?

Ответить
Развернуть ветку
19 комментариев
Юрин Иван

А что по поводу Svetle ?

Ответить
Развернуть ветку
Евгений Романов

Лучший в теории из-за дружелюбного API и полного прекомпайла, но на практике могут быть проблемы со сторонними библиотеками, так как коммюнити сильно меньше, чем у других

Ответить
Развернуть ветку
Евгений Поляков

Вообще, хотите отличный универсальный фреймворк со всеми фишками и компонентами из коробки, да к тому же еще и позволяющий собирать мультиплатформенные приложения из коробки - настоятельно рекомендую Quazar. Он на основе vue, имеет свой cli, развивается очень быстро. Позволяет бешено быстро писать типовые проекты с материал дизайном. Можно писать, не сделав ни одного import'а, все автоматически под капотом.
Компоненты типа material-ui, но настраивать и использовать их в разы проще, например если пописать в квазаре, и потом, например взять реакт с material-ui - это будет когнитивный диссонанс, как вы там живете с этой дичью. :)

Ответить
Развернуть ветку
Vitaliy Kopachyov

Quasar топ!Уже столько проектов на нем забахал.Как горячие пирожки.

Ответить
Развернуть ветку
Vitaliy Kopachyov

Material ui говнище
Для реакта личше ant design

Ответить
Развернуть ветку
Artem Petrenkov
React достаточно активно меняет общедоступные API

Последнее крупное изменение — внедрение Hooks API — было в феврале 2019 года. Через полтора года после этого вышел Vue 3. С февраля 2019 года уже вышли Angular 8, 9, 10, 11, 12, и сегодня ожидается выход 13.

Какое-такое активное изменение общедоступных API видится в React?

Ответить
Развернуть ветку
SimbirSoft
Автор

Добрый день. В конце этого года или начале следующего ожидается React 18, в котором, вероятно, появится много интересного, но это уже материал для отдельной статьи)

Ответить
Развернуть ветку
1 комментарий
Vitaliy Kopachyov

С доводом в статье, что в реакте кто как хочет тот так и архитектуру пишет - это правда без жёсткого контроля получается свой велосипед.

Ответить
Развернуть ветку
Александр Глебов

Кто такой выбор в здравом уме на заказчика переложит) заказчику нужно разработчика выбирать, а не технологии.

Ответить
Развернуть ветку
Denis Glebko

Правильно. Надо выбирать Svelte ;)

Ответить
Развернуть ветку
Maxim Balaganskiy

Aurelia :) Angular какой он мог бы быть.
После нее при взгляде на другие шаблоны или tsx из глаз идёт кровь :)

Ответить
Развернуть ветку
void

У реакта две большие проблемы.... Хорошая реклама.... нет.. она.. не просто хорошая... она отличная... И его используют США и часть... оочень.. маленькая часть... европы... Почему??? Политика.... (в сообществе вью много китайцев а у сша пунктик на это) т. е. Хотите хорошие деньги - реакт... Хотите после тонны абстрации ангуляра забыть даже как делать нативный Date.now() - вперед к ангу... Хотите сыто и с удовольствием (с реакт про удовольствие забудте) и не профукать js как язык со своей сдк - вью или реакт...

Ответить
Развернуть ветку
Влад Тимофеев

Раз уж заговорили о SSR, почему советуете Angular для масштабных проектов?

Может у вас был опыт релиза проектов с Angular Universal?

Есть тут хоть несколько человек кто успешно зарелизил продукт на Angular имея SSR как одно из требований? Поделитесь пожалуйста опытом. А то всё комьюнити рыдает от Universal-а и несмотря на это, все вокруг советуют ангуляр.

Ответить
Развернуть ветку
SimbirSoft
Автор

Добрый день. Angular, помимо простого компонентного подхода, предлагает дополнительные возможности:
- решения для работы с роутингом, формами и стейтом приложения (на базе сервисов). Эти компоненты приложения есть почти в каждом проекте. И в этом случае не будет необходимости изучать сторонние решения. Если обычные сервисы не устраивают и хочется redux-like, то берем ngrx (или ngxs).
- DI: на маленьком проекте может выглядеть громоздко, но в больших enterprise-приложениях помогает уменьшить связность кода и полезно в тестах.
- мощный CLI, в котором есть скафолдинг любых частей приложений. Можно в одну команду добавить angular universal/angular-elements, сделать миграцию на следующую версию. Также можно скафолдить монорепозиторий для разработки либ или шеринга кода.

Если планируется что-то убрать из фреймворка, то сначала функционал помечается как deprecated и хранится несколько релизов. С релизным циклом раз в полгода некоторые фичи удаляются только через 1-2 года с момента появления этой пометки, что тоже бывает важно в энтерпрайз-приложениях.

Ответить
Развернуть ветку
75 комментариев
Раскрывать всегда