Блог компании Конференции Олега Бунина (Онтико)
Angular
JavaScript
ReactJS
Комментарии 34
+10
Старт на React породил 112 проблем

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


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

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

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

Кроме того, если автор формирует мнение такими очевидными манипуляциями, то и сам он не вызывает доверия и далее его читают — строчку через три. В результате, смысл голосования вообще теряется. Получается смысл «сколько нубов клюнули на крючок Ангуляра, вывешенный автором?».
+3
Мне больше вот этот пассаж понравился:
Языки. На 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 в расчет не берем).
0

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

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

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

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


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

+1

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

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

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


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

0
Сервисы можно получить без DI, никакой привязки к положению компонента в дереве нет. DI он и в Африке DI.
+10
> Это HTML, он работает, и вам не нужно заучивать странный JSX, только некие звездочки, скобочки и прочее.

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

Однако все равно не понимаю как, например, такая штука будет понятна любому:
<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.

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

+3

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

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

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

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

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

+1
Есть require :)

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

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

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

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

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

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