Сравнение React / Angular / Vue / Ember / Aurelia

Не холивара ради, а познания для

Поделитесь своим опытом работы с этими инструментами. Что нравится, а что – нет; какие были сложности. Особенно интересно если удалось поработать с несколькими, для сравнения. И еще хорошо, если сможете аргументировать почему вы / ваша команда использует выбранный фреймворк, а не другой.

Какой инструмент вам больше всего подходит под текущие проекты?

  • React
  • Angular 1.x
  • Angular 2+
  • Vue
  • Ember
  • Aurelia
  • Пока хватает jQuery
  • Другой (напишу в комментарии)
  • Не использую ничего подобного
  • Не знаю вообще что это такое

0 голосов

Я напишу обо всем по порядку.

Реакт + Редакс сейчас лечит лучше всего. Использую его без роутинга, в качестве отдельных виджетов на странице. Мне Реакт импонирует тем, что он очень понятен. Когда его используешь нет ощущения кучи магии, которая крутится под капотом (в сравнении с тем же ангуляром4). Это, конечно, накладывает дополнительные заботы о выборе инструмента для управления состоянием и т.п. Несмотря на это, с ним приятно работать.


Ангуляр 1.х старый, а 2+ может и норм, но со временем сложилось такое собирательное убеждение:

  • TypeScript напрягает. Я понимаю зачем он, но в данный момент для наших проектов польза от его использования стремится к нулю. Статические типы, декораторы, муторность сборки. Все это кажется какой-то жестью, которая лишний раз усложняет разработку проекта (а вместе с тем, его поддержку и порог входа новых участников). Тут же вспоминается судьба CoffeeScript. Помню сколько шума было раньше вокруг него, и где он сейчас? Разве что на легаси проектах. Хочется писать нормальный ES6 код, с его модульной системой.
  • Очень бурный темп разработки. Новые версии выпекаются со страшной скоростью. Неприятно понимать, что ты используешь “проходную” версию важного инструмента. Помню как у всех подгорело, когда они после RC в релизе сделали мажорные изменения. Кредит доверия, конечно, не увеличился.
  • Много магии в кишках. Все нужно делать angular-way, или… не делать. Хотя в этом есть и положительный момент. Фреймворк больше сопротивляется говнокоду и делает код ожидаемым.

Т.е. Ангуляр хочет чтобы было как в том анекдоте про автоматическую машину для стрижки. Головы-то у всех разные. Да… но это только в первый раз )


Vue простой и с хорошим потенциалом, но я на него забил по двум причинам:

  1. Он проигрывает Реакту по величине комьюнити, обилию пакетов и времени, отработанному на боевых проектах.
  2. Всего 1 разработчик (Evan You). Монопольное право на развитие проекта – это стремно.

Все остальные инструменты меня испугали одним Hello World, после чего я отложил их до лучшх времен.

1 лайк

Сижу на реакте из-под тайпскрипта. Выбрал реакт из-за простоты библиотеки.
Точно так стоит вопрос менеджмента состояния, пока выкручиваюсь с помощью реактивных переменных (проект на метеоре).

Почему не ангуляр. Боюсь погружаться в экосистему, в которой мало возможностей (по сравнению с реактом). Возможности реакта - богатый инструментарий, надежды на react-native. Нравится что новая версия на ts, что базовые задачи решены в самом фреймверке, нравится что поддерживается большой компанией.

Почему React. Я и так описываю состояния как объекты. Реакт добавляет плюшек к такому подходу. Инструментарий годный (дебаг в браузере, подсветка в вебшторме, интеграция с тайпскриптом). Решает одну задачу. Штуки типа реакт роутера не рассматриваю. Для меня вопрос с менеджментом состояния реакт приложения не решен. REDUX и производные не нравятся.

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

jQuery - не понятно где использовать в новых проектах. Если проект маленький, то легко обойтись без нее. Если большой, то нужны инструменты посерьезнее или команда посильнее. Иначе легко написать jquery-лапши и погрязнуть в поддержке. В проектах, которые надо поддерживать смотрю на jquery как неизбежность.

1 лайк

так вроде ж главный инвестор у Vue.js - Alibaba Group, маленькая китайская контора с миллиардными оборотами) ничем не уступающая Google или Facebook

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

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

У одного человека шанс обладать нужными экспертизами и временем ниже чем у группы.

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

UPD все выше изложенное относится к ситуации когда ты играешь в долгую (прикидываешь что с твоим кодом будет через 2-5 лет). Этот аспект не часто обсуждается в веб мире. Его актуальность требует отдельного пояснения. Я лично считаю этот аспект важным.

Не знаю таких подробностей. Но если главные Алибаба Груп, то странно, что их нет в списке спонсоров на главной.


Если посмотреть, то есть куча достойных инструментов. Но это все колебания на периферии. В центре внимания конкуренция двух гигантов – Гугла и Фейсбука. Их вливания в разработку и пиар своих продуктов огромны. Беря один из ихних инструментов можно более-менее быть уверенным в надежности. Они точно не прекратят разработку, потому что слишком велико их влияние. Англуяр1 закончился, но не потому что гугл забил на направление, а потому что выпустили решение еще лучше.

Ко всем остальным фреймворкам есть пара тезисов:

  • Как долго они протянут на фоне гигантов?
  • Так ли весомы их преимущества в сравнении с сегодняшним “стандартом”?
  • Насколько хороша поддержка комьюнити?
  • Хватит ли реально у них средств и мотивации вливать в свой продукт… потому что у ФБ и гугла точно хватит.
  • Есть ли реальный практический смысл писать на экзотическом Аурелия, Эмбер, Вью, на которых целых ноль вакансий на рынке труда? Для бизнеса это не выгодно ни с точки зрения разработки, ни с точки зрения поддержки.

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

Являюсь старпером, использующим долгие годы Backbone.js несмотря на то что развитие проекта прекратилось. Впринципе этому фреймворку и по сей день поплечу проекты любой сложности и командная игра.

Предпочтение отдаю React.js, так как нравится возможность писать на нем используя старый ES5, а также обходиться без JSX описывая DOM - объектами, ничего не компилируя и все просто и понятно.

Нравится Vue.js есть всегда актуальная дока на русском языке, что позволит создать дешевую команду джунов из СНГ пространства. Есть сравнение с конкурентами https://ru.vuejs.org/v2/guide/comparison.html можно использовать без babel-ов и npm-ов. По звездам на ГитХабе разница не такая уж и большая https://github.com/vuejs/vue (53841) vs. https://github.com/facebook/react (66972)

Angular концепция “не заходит” вообще.

2 лайка

об этом говорили на Framework days в Киеве в этом году. Никто не скрывает что за Vue стоит Алибаба.

в обзорном докладе есть упоминание https://www.youtube.com/watch?v=aUdiwihn3hE&t=10m00s где-то на 10 минуте

и тут https://www.youtube.com/watch?v=x1ySbc-ocRg. тайминг не вспомню

Друг работает над банковской системой на эмбере и говорит, что он реально хорош. Говорит, что порог входа высокий, но если уже вошел, то там есть все что нужно. С точки зрения инжерерного подхода он хорошо продуман и имеет хороший CLI. А менее популярен, потому что никто не вливает в его пиар. Потому и хайпа нет, как вокруг реакта, ангуляра и вью.

После беглого ознакомления с доками оказалось, что эмбер это эдакий Руби Он Реилс во фронтенде. У него полностью своя система сборки с шаблонизатором и роутингом. Переписывать на него существующий проект будет адской болью, а вот новый SPA он хорошо приготовит. Есть мнение, что это реальный дил-брейкер для тех, кто хочет его попробовать: переносить на эмбер существующий проект. Т.е. не получится как в реакте, ангуляре или вью, взять и сделать на нем отдельные части.

Еще недавно команда эмбер выпустила библиотеку юай-компонентов GlimmerJS с поддержкой тайпскрипта.

1 лайк

2 лайка

Полтора года прошло, мне кажется vue уже на том же уровне что и реакт по комьюнити, пакетов и проектов.

Я думаю меньше. Где-то недавно видел сравнение скачиваний, ReactJS в разы больше тех двоих, Angular и VueJS (этот меньше Ангуляра). Это во-первых.
Во-вторых можно посмотреть число вакансий по ReactJS и по VueJS и все становится понятным.

1 лайк

Очень много работы с вью и предложений проектов. Сейчас вью - основная рабочая лошадка. Главное преимущество - простота и скорость решения бизнес-задач, а также работа с шаблонами (как в первом ангуляре). Это снимает много боли, особенно с многоязычными сайтами. По ощущением, реакт требует гораздо более высокого уровня. Но в моей прикладной области это никаких премуществ не даст, наборот - сделает разработку и поддержку более дорогой.

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

Раз уж тема ожила, вставлю и свои 5 копеек.

Последний год работаю на Ангуляре. До этого был на двух проектах где использовался Реакт.

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

В качестве примера приведу один из так называемы “одноразовых приложений”, которые мне приходится делать постоянно.

[https://playground.legalthings.one/]

Один из наших продуктов - приложение для автоматизации бизнесс процессов. Процессы описываются в виде JSON.

Утром комне подошел начальник и сказал что завтра у них встреча с инвесторами, и нам надо показать возможности нашей системы. Нужно было сделать JSON редактор с валидацией по schema, который бы генерирывал бы документацию для процесса описаного в этом JSON.

В правой секции можно переключится на “Data” вклудку (сверху) чтоб посмотреть документацию.

Самый интересный момент это формы.

Весь проект с момента как я про него услышал до момента как я закончил занял около 6-7 часов.


Почему не реакт. Как технология реакт мне нравится, но скорее как игрушка, а не как реальный инструмент который я хотел бы использовать в профессиональной деятельности. Реакт очень ограничен сам по себе и очень не гибок. Довольно легко столкнуться с перформанс проблемами.


Почнму не vue. Его я даже не рассматривал потому что мне он кажется не таким интересным как реакт и не таким мощным как ангуляр.

Если несложно, распиши подробно каждый пункт почему.

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

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

1 лайк

Реакт - библиотека для View (как View в MVC). Ангуляр - фреймверк и платформа.

Реакт делает хорошо то что должна делать View библиотека: определение компонент, рендер, ререндер по изменению данных, рендер на сервере, абстрагирование view слоя (в принципе view любой платформы) от данных. Она не указывает как строить и структурировать приложение, как организовывать работу с данными.

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

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

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

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

Я понимаю, что речь не о голом реакте, а о всей экосистеме, которая строится вокруг него. Вместе с этой системой (управление состоянием, роутинг) реакт представляет конкуренцию ангуляру, потому что он решает схожие проблемы. Точно то же самое с вью.

Тема начиналась как “Не холивара ради…”, Поделитесь опытом…", но похоже все идет к этому.

Реакт ограничен сам по себе потому что нет стейт менеджмента, работы с формами, работы с аяксом и так далее, нет одной “дефолтной” настройки в виде сборщика/тестирования и так далее . По этому чтоб использовать реакт надо еще принять штук 20 решений.

Довольно легко столкнутся с перформанс проблемами потому что довольно не очевидно когда что будет обновляться. Предположим у тебя есть супер сложный компонент который что то очень усердно рендерит внутри, назовем его Slowpoke. По и у него одна из пропертей onChange принимает хендлер, если использовать <Slowpoke data={dadta} onChange={() => this.doSomething()}/>; то компонент будет пытаться перерендерится при каждой попытке. Конечно же можно скать “так делать нельзя и надо биндить функции”, но к сожалению, знают об этом не все.

Что в твоем понимании есть интересный и мощный?

Реакт мне интересен тем что когда пишешь на нем все время приходится решать даже самые тривиальные задачки (которые vue && angular решили за тебя) и меня развлекает решение таких задачек, почти как задачки с leetcode. Например задачка: у тебя есть число и его надо показывать с отделенными тысячам/миллионами/дробной частью да еще и учитывая локализацию. На ангуляре это решается просто <span>{ value | number}</span>, подозреваю что vue что-то подобное тоже есть, а вот в реакте надо поломать голову.

Мощный в моем понимании это сколько батареек там включено. То есть если возникает новое бизнес требование я хотел бы чтоб текущий инструмент их уже покрывал. Я не сомневаюсь что Vue покрывает много кейсов, но мне кажется что ангуляр покрывает больше.

Аксиомы выбора фреймворка не может быть, ибо …

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

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

Именно по этому я стараюсь как можно чаще использовать слова я думаю, мне кажется, я считаю чтоб подчеркнуть что это исключительно мое мнение, но похоже это слабо работает :(

2 лайка

Не совсем понимаю откуда ты взял идею, что начался холивар) Я помоему культурно попросил тебя обосновать слова. Спасибо за детальное объяснение.

Он еще не начался ;)

Опять же. Еще раз хочу уточнить что все вышесказанное исключительно мое мнение, которое основывается на задачах с которыми я сталкивался. Я не считаю ангуляр “подарком богов”, но я также довольно прагматично отношусь к работе, Как уже сказал выше меня развлекает писать на реакте, а на ангуляре писать довольно скучно. Но для работы я предпочел бы все таки ангуляр так как он больше подходит мне и я в 10 раз продуктивней.