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 комментариев
Написать комментарий...
Bob Sinclar

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

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

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

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

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

jquery

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

А вы смешной.

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

как ни странно, свой инструмент своей задаче, если приложение исполняется скажем в умном телевизоре - то чистый js или svelte. если нужен ssr - то nextjs и тд

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

Но ведь NextJS — это реакт :)

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

это все равно что сказать, что React это JS

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

Вы говорите, что "вам реакт не нужен", а сами потом советуете фреймворк, который этот самый реакт предлагает использовать.

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

кхм, прочитать еще раз - вам не нужен реакт, потому что у вас нету проблем, которых решает реакт. it is different

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

Вы хотели сказать: "Вам не нужен реакт, если у вас нет проблем, которые решает реакт"?

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

Комментарий недоступен

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

Спасибо кэп

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

Комментарий недоступен

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

Laravel

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

Комментарий недоступен

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

А почему бы и нет?

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

А зачем, если любой хоть немного нетривиальный интерфейс на фреймворке пишется намного проще и быстрее?

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

Примеры приведёте?

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

Gmail, например.

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

Шутите?

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

Next.js

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