LINUX.ORG.RU

выбираем angular против ?

 , , ,


0

3

Всем привет!

Скажу сразу, я не слишком много смыслю в веб-разработке. Когда я в последний раз ее щупал, там нужно было развернуть веб-сервер, который плевался html+css+js, а для некоторых запросов, можно было ajax.

Если я правильно слежу за новостями, сейчас есть более модный тренд — делать REST API, далее делать браузерное приложение на js, которое ajax-ом через REST получает все данные. Т.е. сервер отдает начальную страницу, а дальше дергай API. И вроде как для этого подхода есть специальный фреймворк — AngularJS, который сравнивают c ReactJS.

Задача — уяснить насколько этот подход на практике работает для небольших задач. А также насколько возможно минимизировать код по рисованию интерфейса в веб-сервере.

Вопрос заключается в следующем:

  1. Правильно ли я все понимаю?
  2. Чтобы уясниться, мне стоит взять текущий Angular или подождать второй версии Ангуляра или взять ReactJS или еще что-нибудь? Какое положение дел?

1. нет
2. vanilla.js
3. не страдай этой моднявой хипстерской хернёй, она того не стоит

Goury ★★★★★
()

Если индексация и поддержка старых браузеров не нужна - годная тема. Самое хлопотное в интерфейсах - цеплять данные на контролы. Подобные фремворки экономят кучу времени.

Что выбирать - дело вкуса. Angular, Polymer, React, Ember, Riot, Knockout + производные, и т.п.

Vit ★★★★★
()
  1. На пол карася. Да, тенденции к этому на рынке сейчас есть, но все таки перед выбором стоит проанализировать задачу.
  2. Хоть я и сторонник AngularJS и мне он очень симпатизирует, все же, тут уже спрашивали недавно об этом.

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

znenyegvkby
()

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

Тут главное всё написать более-менее оптимально, чтобы не требовался разогнанный Core i7 Extreme, 64 ГБ ОЗУ и топовая игровая видео карта, чтобы оно не лагало.

KivApple ★★★★★
()
Ответ на: комментарий от Deleted

Не гуглом единым. Пока слишком мутно все. Я уверую когда появятся крупные сайты на SPA.

Vit ★★★★★
()

Правильно ли я все понимаю?

Да.

Чтобы уясниться, мне стоит взять текущий Angular или подождать второй версии Ангуляра или взять ReactJS или еще что-нибудь? Какое положение дел?

Лучше React.js ничего нет и вряд ли в ближайшее время появится. Рекомендую изучить React.js + Redux.

Legioner ★★★★★
()

Инкрементирую React

Kilte ★★★★★
()
Ответ на: комментарий от anatoly

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

unikoid ★★★
()

работает для небольших задач

Отлично работает. Только потом случаются leaky abstractions ...

минимизировать код по рисованию интерфейса в веб-сервере

Щас берут что-то в БД и рендерят json, или БД сама отдает json (тогда и веб-сервер «не нужон»).

стоит взять текущий Angular

Именно.

https://github.com/angular-ui/ui-router

https://github.com/mgonto/restangular

Какое положение дел?

Хипсторы заполонили. Каждый день релизится очередной убийца фреймворков. Ангуляр для любителей DSL и ынтырпрайза.

outtaspace ★★★
()
Ответ на: комментарий от unikoid

React убирает ненужное разделение на JS, HTML, CSS и кучу проблем, с этим связанных. React убирает убогую выдумку под названием 2-way data binding. React позволяет легко делать серверный рендеринг. React + Redux позволяют использовать hot reload + time travel практически всё время. React это квинтэссенция развития IT: реактивный стиль программирования + функциональщина.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

React убирает ненужное разделение на JS, HTML, CSS и кучу проблем, с этим связанных.

Шо, опять gwt, только в этот раз для неосиливших css?

Deleted
()

Господа, советующие React, вы Facebook вообще видели? Каждый раз, заходя на него по рабочей необходимости, я испытываю не просто ненависть к его разработчикам, но даже желание пройтись струей урины по их лицам. Фу, просто фу.

GoodPerson
()
Ответ на: комментарий от Legioner

ненужное разделение на JS, HTML, CSS

Ненужное разделение верстки, стиля и логики. Oh wow!
Да, помесь JS и HTML aka JSX выглядит прям как привет PHP/ASP/JSP в начале их пути, когда логику мешали с версткой и получали лапшичку на выходе.

убирает убогую выдумку под названием 2-way data binding

Что он предлагает взамен? Судя по примерам - ручную обработку событий, когда вместо ng-bind=«modelField» нужно руками писать обработчик, в котором делать setState, а потом руками этот обработчик навешивать?

unikoid ★★★
()
Ответ на: комментарий от GoodPerson

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

unikoid ★★★
()
Ответ на: комментарий от Deleted

Шо, опять gwt, только в этот раз для неосиливших css?

Нет. GWT скрывает HTML и CSS (если я правильно помню). React их использует, но только в одном месте, а не в трёх разных.

Legioner ★★★★★
()
Ответ на: комментарий от unikoid

Что он предлагает взамен?

Спать по выходным спокойно. Я хз как второй, но первый ангуляр [без боли] не масштабируется.

zz ★★★★
()
Ответ на: комментарий от unikoid

Ненужное разделение верстки, стиля и логики. Oh wow!

Ненужное разделение по разным файлам.

Да, помесь JS и HTML aka JSX выглядит прям как привет PHP/ASP/JSP в начале их пути, когда логику мешали с версткой и получали лапшичку на выходе.

JSP это логика в HTML-е. JSX это HTML в логике. Абсолютно разные концепции.

Что он предлагает взамен? Судя по примерам - ручную обработку событий, когда вместо ng-bind=«modelField» нужно руками писать обработчик, в котором делать setState, а потом руками этот обработчик навешивать?

React ничего не предлагает взамен, это View. Он даёт возможность декларативно объявить обработчик, да. Для полноты картины нужно использовать Redux. В двух словах его не объяснишь, надо разбираться.

Legioner ★★★★★
()
Ответ на: комментарий от zz

первый ангуляр [без боли] не масштабируется.

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

unikoid ★★★
()

Уважаемые, поясните, пожалуйста, про Redux — вот какого лешего введено ограничение, что Action обязательно должен быть plain object. Это пипец какая боль. Нужны какие-то константы в switch-case для редьюсера, нельзя сделать диспетчеризацию по instanceof, полиморизм нельзя применить. Ушел от упоротых на ScalaJS и Diode, так у меня бомбануло.

anonymous
()
Ответ на: комментарий от unikoid

Во-первых, что есть масштабирование, применительно к фронтенду?

Много кода, много разработчиков, много релизов.

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

Ну тут либо повезло, либо не с чем сравнивать. Потому что у меня совершенно обратная история.

zz ★★★★
()
Ответ на: комментарий от zz

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

Я, соответственно, смогу оценить, либо они казались нам не критичными, либо в принципе не встречались.

unikoid ★★★
()
Ответ на: комментарий от zz

Понятно. А в принципе читал, что это для потенциального логгирования/undo/redo. Грустно, что нужно платить за фичу, которой не пользуюсь.

anonymous
()
Ответ на: комментарий от unikoid

Ну так как обычно: запилил X - сломал Y, занестил Z в таблице/списке - получил 2 fps, захотел 10 контролов зависеть друг от друга и от внешних ивентов каких то - переписал половину чтобы работало, получил баг репорт - перебрал 8000 комбинаций состояний чтобы воспроизвести.

Оно все решаемо, часть даже решаема организационно, но зачем их решать если можно взять реакт и не думать :)

zz ★★★★
()

1. Этот подход работает для людей, которые уже набили руку в Angular. Тогда сваять какой-то UI очень просто, не сложнее чем лапшу на сервере городить.

2. Если не поинмаешь разницы - бери Angular, он мощный, понятный и не наркоманский. ReactJS лучше оптимизирует изменения в гигантских DOM деревьях, например таблицах на тысячи строчек или интерфейсов вроде GMail/Facebook.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

3. Еще глянь Polymer/Paper. Идея в том, что он позволяет создавать компоненты с полностью изолированными внутренностями. Например как в HTML5 есть тег и соответствующий элемент <button>, так в Polymer можно легко создать <my-button>, который для стороннего пользователя компонента будет полностью закрытым ящиком, в который нельзя (по хорошему) и не нужно смотреть внутрь. Их него не торчит внаружу javascript, CSS, вообще ничего.

vertexua ★★★★★
()
Ответ на: комментарий от unikoid

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

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Нет сейчас под рукой FF, так что спрошу. Оно уже научилось не тормозить дико адово в FF? Когда тестил с полгода назад, было видно в прямом эфире пошагово, как рисуются компоненты.
Только этот момент тогда остановил от того, чтобы попробовать на нем сделать небольшой проект.

unikoid ★★★
()
Ответ на: комментарий от unikoid

Сам не пишу, жена говорит что теперь оно не тормозит никогда. Ты не с Polymer перепутал, который дико тормозил в начале?

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Это я знаю (краем уха слышал, что вроде в Angular 2 есть улучшения в этом направлении), но далеко не всем нужно рисовать таблицы или деревья на тысячи элементов.
Но вроде сейчас реакт используют везде, даже в приложениях в одну страницу с 5 контролами.

unikoid ★★★
()
Ответ на: комментарий от unikoid

А да, Polymer когда я последний раз проверял тормозил, но скорее всего закончится тем, что WebComponents впилят везде нативно и вот тогда будем смотреть кто будет смеяться последним.

vertexua ★★★★★
()
Ответ на: комментарий от anon1984

Shadow dom должен работать, а у полимера там вроде сейчас какой то новый велосипед, потому что полифилить shadow dom очень дорого. По этому поводу он не работает ни с реактом ни со всем остальным ожидающим поведение как у веб компонентов.

zz ★★★★
()

Если я правильно слежу за новостями, сейчас есть более модный тренд — делать REST API, далее делать браузерное приложение на js

Правильно, ключевое слово тут «модный»

anonymous
()

Скажу сразу, я не слишком много смыслю в веб-разработке

Не переживай. Многие, хвалящие распиаренные фреймворки не понимают js, DOM, CSS, html. Оно, впринципе и не надо, если используешь современный фреймворк. Надо лишь уяснить некоторые особенности перечисленных выше технологий, с которыми фреймворк соприкасается, и можно писать энтерпрайз. Если задача «минимизировать код по рисованию интерфейса в веб-сервере», то большего и не требуется.

<oldfag mode>

А вообще, тенденции в вебе меня очень расстраивают. Все эти Typescript, JSX, WebPack, это просто переливание кусков текста из пустого в порожнее. Трансляторы на трансляторах. Каждый год мы выкидываем один полумегабайтный транслятор и заменяем на новый, мегабайтный. Это путь вникуда. И хуже всего что погрузившись с головой в эту игру в бисер, разработчик не учится базовым технологиям, не узнает ничего нового про веб

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

разработчик не учится базовым технологиям, не узнает ничего нового про веб

А что такого нового и базового появляется в вебе, помимо всех вот этих свистелок и перделок?
HTML5/CSS3/ES6 вышли уже достаточно давно и все, кому надо, их осилили (и теперь они СМОТРЯТ В ТАБЛИЦУ СОВМЕСТИМОСТИ 20 РАЗ В ДЕНЬ и обмазываются тоннами трансляторов, да). Что еще? Куча всяких сомнительных, не всеми поддерживаемых и не до конца стандартизированных вещей, типа WebRTC или Shadow DOM? А какой смысл в них погружаться, если до реального массового применения еще далеко, да и API может поменяться?

unikoid ★★★
()

этот подход на практике работает для небольших задач.

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

второй ангуляр еще сыроват и сильно отличается от первого.

kelyar ★★★★★
()

Так в любом обзорчике все написано, например:

https://medium.freecodecamp.com/angular-2-versus-react-there-will-be-blood-66...

Ключевой момент:

Angular 2 continues to put “JS” into HTML. React puts “HTML” into JS.

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

loz ★★★★★
()
Ответ на: комментарий от unikoid

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

Потому что в нем не надо писать html, для меня, как для программиста это жирнющий плюс.

loz ★★★★★
()
Ответ на: комментарий от vertexua

2. Если не поинмаешь разницы - бери Angular, он мощный, понятный и не наркоманский.

Странно, у меня наоборот именно реакт вызвал такое ощущение. Изучался он намного проще и легче чем ангуляр.

loz ★★★★★
()
Ответ на: комментарий от unikoid

Что он предлагает взамен? Судя по примерам - ручную обработку событий, когда вместо ng-bind=«modelField» нужно руками писать обработчик, в котором делать setState, а потом руками этот обработчик навешивать?

А во многих случаях тебе надо сделать больше чем поменять одно поле. Что предлагает ангуляр тут?

loz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.