⚛ Реакт – хлам, раунд второй
Предыдущая статья на эту тему вызвала бурную дискуссию в комментариях. Отвечаем на популярные возражения любителей фронтенд-фреймворков.
Статья публикуется в переводе, автор оригинального текста Джейсон Найт.
Реакций было много – как положительных, так и, разумеется, отрицательных. В большинстве случаев – стандартные бессмысленные возмущения, подкрепленные плохим кодом или, в худшем случае, вообще ничем не подкрепленные. Однако среди них, к счастью, нашлись и хорошие обоснованные возражения, которые стоило бы обсудить. Этим мы и займемся.
Ты видишь только плохие стороны
Совершенно верно! Я консультант по удобству использования и доступности сайтов. Другими словами, меня приглашают тогда, когда веб-страницы ломаются, и у клиентов возникают проблемы с ними. Безусловно, все это подпитывало мое отвращение к фреймворкам и сделало мои суждения в определенной степени предвзятыми.
В реальном мире я не видел такого приложения, построенного на React, Vue или им подобных фреймворках, которое не было бы с ног до головы пронизано проблемами юзабельности, доступности и эффективности. Я постоянно вижу, как мегабайты кода решают задачи, с которыми могли бы справиться килобайты. В ряде случаев то же самое можно сделать вообще без JavaScript!
Нужно посмотреть, почему эти "плохие стороны" вообще существуют.
Документация – отстой
Один из самых популярных ответов в комментариях. Вы советовали изучить сторонние учебники по React вместо чтения официальной документации. Они гораздо лучше, говорили вы.
Хм, где же я слышал это раньше?
Точно, это же история HTML! Спецификация HTML написана сложным и кривым полуюридическим языком и доставляет реальную боль. Как будто ее сначала написал финн на шведском, затем русский перевел на японский, и в конце концов Google снова перевел ее на английский. Хуже всего, что документ, описывающий язык, на котором пишутся сайты, создан совсем не для пишущих сайты людей, а исключительно для разработчиков браузеров.
Плохая документация может убить хороший проект, а реально крутая документация может даже из плохого проекта сделать бомбу – см. jQuery.
Минутка ностальгии: в конце 80-х и начале 90-х разработчики были избалованы хорошей документацией. Если вы покупали компилятор Borland, то в комплекте получали 5 или 6 книг-руководств на совершенно понятном языке. Вот это были времена!
Документация React – чистой воды пропаганда с плохими и запутанными примерами кода. Это очень плохо! Самое плохое, что большинство защитников фреймворков не могут представить адекватных аргументов кроме этой самой документации.
Это просто примеры работы системы, их код не имеет значения
Универсальный довод, который приводили многие из вас.
Если ваши примеры – хлам, то и код, который люди пишут на их основе, тоже будет хламом! А люди вроде меня увидят этот мусор и решат, что весь ваш фреймворк – мусор. Если вы не можете даже написать грамотный HTML, как я вообще могу доверить вам что-то более сложное?
Что же, это были более-менее осмысленные возражения. Остальные в основном тупо повторяли пропагандистскую ерунду, не подтвержденную фактами.
Фреймворки легче поддерживать
Да неужели? Больше работы, больше кода, разбросанного по всему проекту в виде спагетти.
И ради чего? Хнык-хнык, я ни хачу учица пользоваться DOM?
Это напоминает плохие идеи вроде XSLT или создания собственных HTML5 тегов, что полностью убивает весь смысл семантики, которые возращаются к нам каждые 5-10 лет.
Но это я, конечно, застрял в прошлом, потому что указываю на то, как вы заново копируете вещи, которые уже плохо себя показали.
"Легче" и "лучше" – это сверкающие маркетинговые обобщения, за которыми редко стоят реальные факты. Как будто вам дали двухлитровую бутылку кваса, на которой большими буквами написано – "НА 33% больше". А внизу мелким шрифтом "чем в нашей полуторалитровой бутылке". Потрясающе!
Так сильно стараясь "упросить" вещи, вы фактически усложнили свою задачу.
Миллионы сайтов используют фреймворки, они не могут ошибаться
Типичный эффект присоединения к большинству ("эффект фургона с оркестром", bandwagon fallacy). Если все лемминги бегут прыгать с обрыва, нет причин следовать за ними.
Этот эффект может принимать самые разные формы – от заискивания перед создателями до симпатии к громким именам, которые используют продукт. Однако это не фактические аргументы, а лишь средство манипуляции. Большинство тоже ошибается.
Популярность продукта не гарантирует, что он хорош (или хотя бы адекватен). Миллионы людей поддерживают всякую безумную ерунду – от сексизма и расизма до исцеления наложением рук и непереносимости глютена.
Можно долго рассуждать о подобных заблуждениях, но будет лучше если вы просто прочитаете мою статью, в которой я уже это сделал.
Наказание эхо-камеры
У людей есть особенность: если им что-то нравится, они, скорее, ничего не будут делать, чтобы показать это, и наоборот, если что-то не нравится, они обычно это проявляют. Поэтому каждый "лайк" обычно ценнее, чем "дизлайк".
Однако очень часто мы сталкиваемся с эффектом эхо-камеры.
Многие люди писали мне в личку, что в целом они согласны с моей точкой зрения, но не могут озвучить это, потому что будут уволены.
Имеем то, что имеем. Хочешь добиться успеха и получать деньги на настоящей работе – заткнись и используй то, что используют все.
Это еще больше заставляет думать, что React – это скорее маркетинговая афера, чем нормальная система с реальными преимуществами. Даже если бы он был хорошим, уже этого достаточно, чтобы я хотел с ним бороться.
Значительное количество содержательных ответов на предыдущую статью несколько смягчили мое мнение о React и тех, кто его использует. Я все еще думаю, что это хлам, но теперь немного лучше понимаю, почему вы мне не верите и выбираете его (если это не банальное воздействие маркетинга).
На мой взгляд, у этой методологии нет никаких преимуществ перед традиционными, а результаты ее использования (плачевные) я вижу постоянно.