Почему вы перешли с Angular 2 на Vue.js (и почему вы не поняли, что такое React)

Или, опять же, почему мы никогда не должны сравнивать яблоки с апельсинами.

Эта история также опубликована в моем личном блоге.

Несколько дней назад на Medium появилась статья под названием Почему мы перешли с Angular 2 на Vue.js (и почему мы не выбрали React) ». Сегодня он наконец попал в круг моих коллег, так что мне наконец удалось прочитать, о чем эта статья. То, что начиналось как многообещающая статья, быстро превратилось в нескончаемый поток неудачных попыток, и мне пришлось писать контр-критику.

Полное раскрытие информации: я потратил довольно много времени на все три фреймворка, и хотя я трачу больше времени на Angular 2+, я также потратил достаточно времени на React и Vue. И хотя я стараюсь сделать эту контркритику как можно более сбалансированной, вам не нужно верить мне на слово.

Упускается суть TypeScript

В статье рассказывается о том, что TypeScript является их основным источником разочарования по поводу Angular 2. Многие другие люди даже заявляют, что использование TypeScript означает изучение совершенно другого языка в целом. Но вот в чем дело:

Ваш код JavaScript уже является TypeScript.

TypeScript - это не другой язык. Это в значительной степени заблуждение №1, когда люди говорят о TypeScript. TypeScript - это просто надмножество JavaScript, которое добавляет необязательную статическую проверку типа поверх стандартного JavaScript. Основываясь на моем личном опыте (когда я писал свой личный код AI для Screeps), 75% времени вы пишете просто стандартный ES6, остальное - просто набор типов. Вдобавок ко всему, он имеет первоклассную интеграцию IDE, которая позволяет использовать автозаполнение, чего раньше не было ни в одной среде JavaScript.

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

Это потому, что TypeScript - это JavaScript.

Избиение мертвой лошади Angular

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

Раньше я баловался с Angular 1, но не слишком много, до такой степени, что я мог освоить Angular 2 гораздо быстрее. И, честно говоря, меня это вполне устраивает. Он имеет уникальную модульную структуру, и написание приложений с ее помощью заставляет меня немного больше заботиться о передовых методах работы.

Мое внимание привлекла сравнительная таблица, составленная автором для трех фреймворков.

В таблице показано, что Angular «медленно» кодирует, что очень субъективно. Фактически, автор повторяет эту субъективность и в «Легко обучаемой части», особенно с совсем не научными единицами, такими как «медленный», «средний» и «быстрый». Очень полезно провести небольшой сравнительный анализ и сравнить его с другими аналогами, которые прошли тот же путь (как автор упомянул в комментариях). К сожалению, я не увидел ничего из этого в статье.

Реакционная способность: вроде

На самом деле Angular 2+ создан для реактивного программирования! Не зря он построен на основе RxJS, библиотеки, которая добавляет в JavaScript возможности функционального реактивного программирования.

Бросая взгляд на React, как будто это ничего

В этой статье раздел о React содержит только один абзац. Когда я это читал, мой первоначальный вывод об их ответе на вопрос «почему мы не выбрали React» заключается в том, что они на самом деле никогда не углублялись в него. Фактически, вся статья больше посвящена Angular и Vue, чем React.

Другая часть, где они упомянули React, - это когда они говорили о своем лицензировании.

В то время, когда я пишу это, было много дискуссий, потому что Facebook изменил лицензию React на BSD + Patents.

Лицензия BSD + PATENTS используется React с 2015 года, и с тех пор Facebook никогда не менял ее.

Фактически, это только недавно стало предметом всеобщего внимания, потому что Apache Software Foundation (ASF) наконец осознала, что лицензия BSD + PATENTS React противоречит условиям лицензии Apache, поэтому она была отмечена как несовместимая с проектами ASF.

Почему мы никогда не должны сравнивать яблоки с апельсинами, опять же

Расплывчатость статьи позволяет предположить, что автор списал Angular просто из-за разочарования, и, благодаря времени, потраченному на попытки преодолеть свое разочарование, потерял всякую веру в Angular, когда взглянул на сад React и бросил случайный бумажный самолетик в общем направлении Vue.js.

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

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

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

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

В этом случае решение ложится на вас.

Тебе нравится Vue? Круто!
Вы предпочитаете React? Это здорово!
Хотите поскорее разобраться с Angular? Это авантюрно с твоей стороны, ну да ладно, ты любишь!

¹ Google настаивает на том, чтобы Angular 1 назывался «AngularJS», а Angular 2+ - «просто Angular». Это просто создает дополнительную путаницу и, вероятно, является одной из причин, по которым люди изначально не хотели переходить на нее.