Старт на React породил 112 проблем

Очень странный способ считать проблемы — по числу доступных стартерпаков. Интересно, почему для Angular такой подсчет не проводили. Вот здесь разных вариантов тоже хватает.


загуглил «как отправить HTTP запрос в React» и получил ссылку на stackoverflow, где мне сказали, что можно юзать fetch, axios, еще что-нибудь.

fetch — это нативное браузерное api, vanilla.js. Если разработчик не знает возможности платформы и не может сделать базовые вещи без помощи фреймворка, то надо учиться, а не инкрементить счетчик проблем.

Здесь в статье автор попробовал манипулировать мнением читателей, снабжая слова «Angular» эпитетами «просто», «Очень понятный», а React — словами «Проблемы». По голосовалке посмотрим, что получится. Если не считать, что такой подход здесь слегка неуместен.

Кроме того, если автор формирует мнение такими очевидными манипуляциями, то и сам он не вызывает доверия и далее его читают — строчку через три. В результате, смысл голосования вообще теряется. Получается смысл «сколько нубов клюнули на крючок Ангуляра, вывешенный автором?».
Мне больше вот этот пассаж понравился:
Языки. На Angular можно писать на JavaScript, на TypeScript, на Dart, на Flow — на чем хотите.

В реалиях варианта, насколько я понимаю, ровно два — Typescript и Dart, на них оно нативно работает. Новичок помрет, раскуривая A на обычном JS (или тем более Flow). То, что это «можно» сделать — ничего не говорит о сложности. По языкам/диалектам, которые нормально поддерживаются, я думаю React далеко впереди. Варианты: JS ES5 (как там у ангуляра?), JS ES6+, Flow (очень странно автор пишет это только ангуляру, хотя инструмент затачивается под React), Typescript, Elm, ClojureScript, ReasonML.

То есть объективно для широкой публики нормально поддерживается в ангуляре только TS (Dart маргинальный), в реакте — обычный JS и JS+Flow, и тот же Typescript (маргинальные Elm, Clojurescript, ReasonML в расчет не берем).

С другой стороны, "неширокая" публика и не будет писать на Elm и т.д.

Судя по звездам на гитхабе, AngularDart даже более маргинальный, чем Clojurescript-React (разница на порядок), чем ReasonML+React (разница вдвое), и примерно вровень с Elm-React (при том, что у Elm уже есть встроенные средства работы с DOM).

Собственно про Dart ещё настораживает, что в России ровно одна контора производит всю движуху вокруг него.
Интересно, а зачем вообще может понадобиться Elm-React? Для миграции на elm своих наработок (приложения) в реакте?

Я бы еще Kotlin для React добавил. Есть официальная обертка от разработчиков JetBrains.


Я пробовал на нем написать простое приложение (табличный список и форма редактирования), мне зашло хорошо.

Для Kotlin есть и обертка для ангуляр

А где на него можно посмотреть? Единственный проект, что я нашел, не внушает доверия

Кроме этой обертки есть еще вот приложение пример как использовать Kotlin с Angular без оберток.
А есть ли в React DI?

Есть require :)

require != DI

В Реакте ДИ нет. Но дело в том, что на Реакте можно писать без инъекций, а в Ангуляре без них писать невозможно.

В ангуляре можно писать без иньекций, если делать нефиг. Только вот зачем? IoC — полезный паттерн для любых приложений больше Hello World.
> Это HTML, он работает, и вам не нужно заучивать странный JSX, только некие звездочки, скобочки и прочее.

Да сколько можно-то. То есть JSX у вас странный, а вот @[{вся}=эта;] каша[()] — типа просто «некие скобочки»?
Скобочки — это короткая версия записи. Вместо
(click)="doSomething()"
можно писать
on-click="doSomething()"
а вместо
[text]="someProperty"
писать
bind-text="someProperty"
Таким образом при работе с Angular можно получить самый обычный HTML, который будет понятен любому.
Спасибо за комментарий, не знал. Пришлось зачитаться вот этой замечательной статьей

Однако все равно не понимаю как, например, такая штука будет понятна любому:
<li *ngFor="let user of userObservable | async as users; index as i; first as isFirst">
   {{i}}/{{users.length}}. {{user}} <span *ngIf="isFirst">default</span>
</li>

И если прочитать её еще можно, то отредактировать её — вообще не понятно. Откуда там async взялся? Почему после палочки идут точки с запятой? Как писать ngFor без *?

Последнее — вообще эпик, оказывается можно писать вот так:

<ng-template ngFor let-item [ngForOf]="items" let-i="index" [ngForTrackBy]="trackByFn">

Что можно переписать как
<ng-template ngFor let-item bind-ngForOf="items" let-i="index" bind-ngForTrackBy="trackByFn">
если я правильно понял. Ну как бы если это у вас «наиобычнейший html», I'm sorry for you.

Примеры взяты отсюда

В angular 1 директива цикла была месивом. Ну и ничего и не поменялось:)

Вполне себе обычный, легко процессится стандартными тулзами, легко пишется людьми знающими HTML без навыков кодинга, все доп конструкции вставляются позже программерами. А с JSX же распределение работы и создание всяких полезных тулзов крайне сложно.
Я начал знакомство с React, естественно, с выбора идеального Starterpack — я же ничего не понимаю в React.

А как же create-react-app ссылка на которой есть в официальной документации в разделе Install? Половины описываемых проблем бы просто не было.

В случае с React самым популярным языком пока остается JS. Сейчас есть небольшое движение в сторону TypeScript

"Небольшое движение" — это нативная поддержка JSX в Тайпскрипте, с проверкой шаблонов во время компиляции.

Есть require :)

Эта ключевая возможность, которой нет у клиента. Чем заменять коллбеки это тоже вопрос. Если честно то и Ангуляр и Реакт в современном виде это мусор. Но другого нет. Вуй не в счёт

Вообще в целом в Angular разметка получается более адовая и нечитаемая, чем в React. К последнему (к JSX) нужно только немного привыкнуть, а дальше дело пойдёт легко
Ангуляр позволяет не использовать скобочки и будет самый наиобычнейший HTML.
Субъективное ИМХО Angular рулит.
Как по мне, если ты бекендер которому по какой-то причине понадобился фронтенд, или фулл стек разработчик, то твой выбор ангуляр, ты в нем будешь как рыба в воде. А вот если ты фронтендер и не пересекаешься с бекендом совсем, то тут лучше брать реакт. Он проще и без засилья энтерпрайзных методов разработки.

А если ты архитектор, то в этом случае как быть?

Не зацикливаться на фреймворках, а проектировать бизнес-логику. :)
Как человеку который работал с React v15 ( R), а затем начал с Angular 5 (A) отмечу следующее:
1. R лучше в плане понимания архитектуры в голове (как то оно все в виде дерева для меня).
2. A реально удобнее на старте — все под рукой сразу.
3. В R нужно понять: как работать c redux и юзать для сайдеффектов (привет thunk или saga) и для этого нужно искать реализации.
4. Как я не пытался, R как то не очень подходит под «ивент» архитектуру (опыта немного но все же). Здесь, на мой взгляд, ярче будет A.

В каждом фреймворка своя идеология и ее нужно научится понимать и все будет как по-маслу)

P.S. Есть у кого-то удобный архитектурный пример работы R, saga и socket?
хотелось бы уточнить что такое «не ивент архитектура» для web-ui? на противопоставлении будет проще понять что вы хотели сказать.

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

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