Комментарии 56
Почему Angular, несмотря на всё его великолепие и экосистему, не превосходит React?)
В каком месте не превосходит? По популярности? Вроде, Ангулар на первом месте по популярности.
Разве, как по мне рынок во Front-End сейчас имеет примерно такую последовательность фреймворков по популярности: React -> Angular -> Vue
Из-за великолепия и экосистемы, очевидно. На мелких/средних проектах весь ангуляровский явный и неявный бойлерплейт и магия декораторов многих отпугивают. Да, писать легко, но держать всю эту экосистему и принципы в голове (если не постоянно) — очень тяжко. На средних/крупных проектах ангуляр = вендор лок, что тоже не очень радует.
Сложно превзойти React в убогости роутинга, DI и работы с формами. Все эти моменты в Ангуляре работают настолько прекрасно, что в момент переключения на React происходит культурный шок.
В целом, мне, как разработчику на Ангуляре, достаточно симпатичен React. Я вижу достоинства как у одного, так и у второго. Оба инструмента достойны права на жизнь.
>работы с формами
Это вы про reactive forms, которые обмазаны в any?
Это вы про reactive forms, которые обмазаны в any?

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

Стандартных нет, но есть тот же Formik, React Final Form.

<-


вменяемого средства для работы с формами.

Ну вы поняли.

— огромный API
— своя система модулей
— неистребимый рут узел в DOMе
— отсутствие возможности легко создавать компоненты высшего порядка (HOC)
— навязывание кровавым энтерпрайзом
А это был сарказм про без сарказма?)
Ну если нет, то для начала можно показать вот так
github.com/angular/components/issues/5648
2017 год — DateTime запланирован на 2019 — как говорится ну вы там держитесь в замечательной экосистеме, скоро будет)
А самое веселое, что кто то сделал еще в том году этот picker и прислал PR, но дев команда конечно же его отклонила, по причине «нууу это сделано не очень качественно, а будет использоваться везде, поэтому мы сделаем на века и монолитно(спойлер: не сделают)»
Я уже молчу про боль со сборкой либ, — ng-serve собирается wepback, а либа будет собираться с ng-packagr, который со своими приколами, вот и приходится жить в этой замечательной экосистеме на --watch((
А самое веселое, что кто то сделал еще в том году этот picker и прислал PR

Так используете пикер из PR, вам кто-то мешает?

Нет. Вообще, изначально я предполагал, что более опытные коллеги расскажут, что да как, но всё пошло не по плану.
Как бы мы все не любили гугловские сервисы, но React с его экосистемой намного приятнее и удобнее использовать, нежели Angular.
(p.s. это мнение того разработчика, который не питает особой симпатии к JS в целом, но считает ReactJS светлым лучом)
НЛО прилетело и опубликовало эту надпись здесь
Если показалось, то писать об этом вовсе не обязательно. ;)
НЛО прилетело и опубликовало эту надпись здесь

Просто фронтенд сейчас проходит тот же путь, который проходила серверсайд или десктопоная разработка, с теми же идеями и т.д…
Просто поскольку в других областях этот путь уже пройден и накоплен определенный опыт — то, что исторически занимало десятилетия, в рамках фронта ужалось до нескольких лет. Но когда фронт догонит (а он уже почти), то и поезд замедлится до нормального уровня.

Фронтенд уже давно впереди, так как в силу своей реактивной природы не стал задерживаться на абортивной ООП-стадии развития (в чем надолго увяз бэк), и все больше движется в сторону функционального подхода. Благодаря React и Redux в том числе. Angular здесь скорее исключение. Досадное. Потому и нравится больше тем, кто пришел из java. Но это не надолго.

Если не брать всякие Elm, то вот это, я понимаю, реактивное программирование:

let greeting = 'Hello';
let name     = 'Alice';
$: phrase    = greeting + ' ' + name;

name = 'Bob';

<h1>{phrase}</h1> <!-- Hello Bob -->

А не когда приходится диспатчить мессаджи в черный монолитный шмат данных типа Redux, MobX, Vuex, только ради того, чтобы всё работало и подводить под это философию. И это не реклама, а просто повод задуматься, так ли уж реактивен React?
Фронтенд уже давно впереди, так как в силу своей реактивной природы не стал задерживаться на абортивной ООП-стадии развития

Наоборот — фронтенд еще не преодолел "реактивную" стадию развития, от которой в других областях давно отказались в пользу ООП. С-но, реакт+редакс — это чистой воды реактивный пых конца 90-х начала нулевых (собственно, в фейсбуке реакт и сделали для портирования легаси с пыха на жс), тот самый пых что вошел в историю как канон говнокода. Дальше в истории спустя лет ~пять начали появляться полноценные фреймворки, то же самое ждет и фронтенд спустя пару лет.
А ангуляр просто обогнал свое время, так как при его разработке уже использовали существующие best practises, к которым сообщество еще ментально не было готово, точно так же как сообщество пыхкодеров не было готово не говнокодить в нулевых.


и все больше движется в сторону функционального подхода.

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

О! Я знаком с это веткой реальности. Там ещё немцы с японцами вторую мировую выиграли. Тоже прикольно, да.

О! Я знаком с это веткой реальности.

Нет, думаю, незнакомы. Когда благородные доны с бека писали в 2007 на linq свои первые монады — вы, полагаю, в школу ходили (чтоб вам была некоторая временная привязка и понимание, на каком уровне в то время находился фронтенд — в 2006 зарелизилась первая версия jquery).
А потом, спустя 12 лет, вы закончили школу и универ, поработали пару годиков и рассказываете нам тут про прогрессивность и функциональщину в js, в котором спека es6 с arrow functions появилась в 2015 — позже даже чем в джаве. Чем в джаве, Карл! Это ж надо было постараться, чтобы оказаться большими тормозами, чем отбитые ретрограды из robust enteprizzze мирка.

Пожалуйста, продолжайте себя убежать аргументацией уровня "первый нах". Ваши предположения неверны, о благородный дон, но слушать вас интересно.

Ваши предположения

Какие предположения? Я вам просто несколько исторических фактов перечислил :)
Весь "фп-хайп" современного фронтенда — это повторение того же "фп-хайпа" десятилетней+ давности с бека, когда, с-но, функциональщина на бек и пришла (C# 3). Тогда же во всю форсились скала, f#, clojure, да и тот же хаскель. Просто, в силу молодости, господа фронтендщики того хайпа не особо застали. Да и выглядел он, конечно, иначе, в силу отсутствия твиттеров с инстаграммами.

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

Так я и не говорю про то, где изобрели. Я это к:


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

Где же он впереди, если все, что мы видим во фронте сегодня, уже было годы назад?


Предположения в попытке перейти на личности.

В моих постах не было ни одного перехода на личности.

Если попытка принизить собеседника, высказывая предположения (ложные) о его возрасте, не переход на личности, то рискну предположить, что вы обращались не ко мне, а к некоему архетипу фронтенд-разработчика, созданному вашим благородным воображением благородного дона.
Фронт впереди, потому что там доминирует тенденция перехода ко все более функциональному подходу разработки, и отказ от ООП. Недавно появившиеся хуки в реакте — лишнее тому доказательство, вкупе с фактами большей популярности реакта и "довольности" этой технологией со стороны разработчиков. Это неспроста, такой код легче писать и обслуживать.
Никто не мешает писать и бэк функциями, на том же хаскеле или ерланге. Но в энтерпрайзе все равно крепкие позиции держит java со своим ООП (последнее, пожалуй, слишком сильное допущение с моей стороны, так как основано только на моем личном опыте работы в конкретной компании, и я буду рад ошибаться).

Если попытка принизить собеседника, высказывая предположения (ложные) о его возрасте, не переход на личности

Во-первых, не было никакой попытки принизить, это уже вы что-то как-то восприняли. Во-вторых, "ты дурак, по-этому не прав" — ad hominem, "ты не прав, по-этому дурак" — не ad hominem (но невежливо, конечно.)


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

Нет, она не доминирует, позиции ООП на данный момент во фронтенде несколько сильнее, чем позиции ФП (собственно, ФП во фронте практически отсутствует, присутствует маскирующаяся под него процедурщина, а ФП ограничивается тривиальными map/filter/reduce, реально ФП вещи, вроде трансдьюсеров, популярности публики не снискали). При этом и возможности ООП (классического) и нормально го ФП (человеческие лямбды) появилось на фронте одновременно — в ES6, то есть они там достаточно честно конкурируют (в отличии от других областей, куда ФП пришло позже ООП). Конкурируют между собой и с процедурщиной — которая на фронте была сильна исторически. Она, с-но, сильна везде, где задачи не предъявляют повышенных требований к качеству кода (на фронте так и было до не столь давнего времени). С течением времени, с-но, процедурщина вроде реакта и редакса будет уступать свои позиции другим парадигмам (как ООП так и ФП).


Никто не мешает писать и бэк функциями, на том же хаскеле или ерланге.

Дык писали, только не на хаскеле и эрланге, а на пыхе, решая те же задачи (генерация ДОМ). Потом решили, что ну его нафиг :)
Вы путаете "функциональное программирование" и "писать функциями". "писать функциями" — это процедурщина.
На десктопе, опять же, в контексте УИ был силен процедурный подход — но его потом начали вытеснять полноценные гуи-фреймворки с темплейтами, биндингами и вот этим вот всем.


Это неспроста, такой код легче писать и обслуживать.

На популярность уже упомянутого мной не раз в рамках этой дискуссии пыха посмотрите в нулевых. И на качество кода, ага :)
Тоже все любили и все все нравилось, пока потом не выяснилось (спустя годы, ага), что поддерживать написанные за эти годы ворохи = адъ и погибель.

Извините, но мне надоело наблюдать эти переливания из пустого в порожнее. Удачи в вашем благородстве :)

Я понял ваш «откос», и тем самым хотел ответить, что если вам так важно с одного поезда перепрыгнуть на другой, каг бэ быть в тренде, то писать об этом вовсе не обязательно. ;)
Вы не привели аргументов и оперируете не инженерными терминами («приятнее»). Не понимаю, к чему этот комментарий здесь.
Я считаю, что все и так прекрасно понимают о каких «приятный и неприятных» вещах имелось ввиду (сравнений на хабре, и на других сайтах — достаточно). Расписывать термины, и уж тем более отстаивать здесь свою позицию — нету никакого смысла, потому что это спровоцирует хэйт в комментариях, и популярность этой статьи.
Я всего лишь хотел сказать, что даже не питая особой симпатии к JS в целом (то есть мне все ровно что выбрать, React или Angular), я выбираю React, потому что с его помощью я страдаю меньше чем обычно.
Ангуляр по популярности не превосходит Реакт потому, что новичкам труднее в него войти. Путаница с первой версией мешает новичкам. И то что надо сразу знать и тайпскрипт и rxjs тоже препятствие для многих. Для больших командных коммерческих приложений стайлгайд (https://angular.io/guide/styleguide) желательно знать, чтобы писать однообразный командный код и никто не запутывался в коде. Но если все преодолеть, то ангуляр в руках разработчика становится мощной перспективой машиной для очень серьезных приложений, которая ещё и поддерживается таким гигантом как Гугл.
Не знаю чего там сложного в Angular. Я как человек, которого всегда воротило от веба и его динамичности пришелся по вкусу Angular. Прямо как-будто пишешь настольное приложение.
Осталось дождаться Blazor от Microsoft и посмотреть, на сколько он конкурентно способный.
Про гиганта Microsoft постеснялся написать )). Подумал они колаборационируют с Гуглом только по тайпскрипту. Согласен, он больше похож на десктопные приложения, я думаю программистам потому и легче в него перейти. Но кажись в Реакт прут в основном из верстки с меньшим опытом программирования, поэтому их и много.
React же в свою очередь сразу отпугивает профессионалов, у которых большой опыт разработки, вводными курсами где сразу нарушается основополагающий принцип всего программирования как separation of concerns (SoC), смешивается html и js. А также отсутствие контроля над кодом как с тайпскриптом в ангуляре сразу, для тех кто привык компилировать, а не в рантайме ошибки ловить.

Что же это за профессионалы такие, которые выучили только правило про "CSS и JS отдельно" без предпосылок и контекста и теперь следуют ему как суеверию?

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

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


Только вот отделение HTML тут не причем, separation of concerns можно организовать по-разному:



Разделение по принципу HTML/CSS/JS безнадежно устарело и в современный подход с компонентами не вписывается. Аргументация "у них там раздутый код, а у нас поняный" очень слабая, нужны реальные примеры. Именно грамотное объяснение, как и когда использовать паттерны, характеризует профессионализм.

А вариант "скомбинировать эти два подхода" не рассматривается принципиально?

Можно. Основной пойнт тут в том, что совмещение HTML и JS не является чем-то страшным само по себе.

Само по себе оно не страшно. А вот его безальтернативность — страшна.

Вообще, в реакте таки есть разделение на html/js. То, что в темплейт-фремворках идет в html, в реакте попадает в dumb component, а то, что в js — в smart component. Просто в темплейт-фреймворках такое разделение является обязательным и форсится фреймворком, который берет на себя генерацию бойлерплейта, а в реакте — все руками. Или вообще никак, когда программист ленивый.

Потому что когда выходил Angular не было хайпа про необычно «быстрый» v-dom. Плюс сразу типо создан в facebook, а на этом похайпили. Хотя даже по скорости render в обычных ситуациях он проигрывает angular, единственное в чем выигрывает это приоритетных render, которого нет в angular. А про экосистему вообще и говорит не стоит, у ангулара очень хорошо сделано все от DI, до условного рендера.
>Хотя даже по скорости render в обычных ситуациях он проигрывает angular
пока не захочется повесить листенер на mousemove

Ангуляр по популярности не превосходит Реакт, потому-что:


  • Код не композабелен. Вот прям совсем. Если вы пишете на ангуляре, то куча бойлерплейта и копипасты ждёт вас.
  • rxjs — самая отвратительная либа со стримами из тех, которые я вообще встречал.
  • Статическая типизация в ангуляре регулярно скатывается в Any, рантайм ошибки происходят очень часто, а отлаживать их в ангуляре очень больно.

Но каждый из этих пунктов ведь ровно с тем же успехом применим и к экосистеме реакта.

В реакте с композабельностью получше и rxjs не навязывают.

В реакте с композабельностью получше

Чем получше? Точно так же абсолютно некомпозабельный by design подход, или вы тогда уточните что конкретно имеете в виду.
Я думаю если бы в реакте все было композабельно и без бойлерплейта с копипастой, то самой распространенной темой статей по реакту не было бы "как избавиться от бойлерплейта в редаксе".


и rxjs не навязывают

Ну то есть реактивности искаробки нет вообще, и когда она нужна — приходится городить лютые костыли.

Мне кажется вы не умеете его готовить.
1) Единственное, что согласен, конечный размер бандла, но обещают с ivi будет меньше
2) RxJs — без примеров, выглядит как просто, как не разобрались
3) Мы генерим типы с gql, swagger и отлично живем без any

Может быть и не умею. А может быть просто знаю, как может быть. Но сейчас я ушёл в бэк на скале и теперь этот ужас меня уже не сильно волнует.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Информация
Дата основания

27 августа 2015

Местоположение

Россия

Сайт

ruvds.com

Численность

11–30 человек

Дата регистрации

18 марта 2016

Блог на Хабре