LINUX.ORG.RU

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

 , , ,


0

3

Всем привет!

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

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

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

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

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

Ответ на: комментарий от loz

не надо писать html

Гордишься собственной узколобостью или неумением твоего руководства нанять нужные кадры?

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

Гордишься собственной узколобостью или неумением твоего руководства нанять нужные кадры?

Не знал, что того чтобы писать HTML нужны отдельные кадры.

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

Гордишься собственной узколобостью

Я рад тому, что и мне и другим, не приходится вручную делать то, что может сделать за меня машина.

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

Да это вообще фантазии многих фреймворкописателей — что HTML пишут какие-то мифические верстальщики, причём крайне тупые, поэтому для них надо всё делать максимально просто. На деле никогда такого не видел. Может где-то и есть такое, конечно, но это скорее исключение, чем правило.

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

А какая разница между «писать HTML» и «писать адскую лапшесмесь HTML и JS»?
Все равно конечная верстка не святым духом генерится, а из твоего JSX, соответственно HTML тебе знать придется, вместе со всеми вытекающими.

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

Я так понимаю, что под «больше, чем поменять одно поле» подразумевается одно из:
1. Вычислить отображаемое значение по какому-то правилу.
2. Пересчитать значения, зависимые от изменившегося.
Соответственно, ангуляр предлагает автоматический пересчет всех твоих выражений на каждое изменение значения исходного поля. Тебе не нужно писать никаких обработчиков и никак не нужно привязывать их. Тебе нужно только вставить выражения (и это могут быть абсолютно любые JS-функции, хоть асинхронные) и вставить их в шаблон (по сути, тот же JSX как бы, только не перемешанный с JS-кодом).
Если же тебе хочется совсем странного - ты можешь руками подписаться на обновление значения (angular.$watch) или же вообще на тот же onChange. Ангуляр не запрещает тебе этого делать, но предоставляет удобную, более декларативную замену.

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

На самом деле, многие программисты совершенно не могут в нормальную верстку. Есть большая разница между «писать HTML» и делать действительно правильную верстку, кроссбраузерную и поддерживаемую, к тому же делать ее быстро, а не выдавать по 5 строк html/css после каждых двух часов в гугле и на stackoverflow.
Связано это с тем, что современный HTML и CSS - не такие уж простые и примитивные инструменты и на их освоение на должном уровне нужно время и желание. С чем гораздо лучше у тех, кто специализируется только на верстке или фронтенд-разработке, чем у человеков-оркестров, которые и бэкенд на джангорельсах накидывают и фронтенд к нему.
Поэтому наличие в штате специалиста-верстальщика вполне может быть оправдано.

unikoid ★★★
()

Кстати, всем советчикам vanilla.js ИТТ.

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

Сначала хочется шорткат для querySelectorAll/getElementBy*, потом небольшую высокоуровневую обвязку над XHR, еще чуть позже понимаешь, что раскидывать руками значения по элементам как-то невесело и изобретается какой-нибудь data binding или типа того, а еще хочется обмазаться полифилами для несвежих браузеров. А еще, как-то у нас уже много модулей, надо бы для них какой-нибудь реестр, а то и dependency injection.

У-упс, мы только что получили сильно специфичный вариант ангуляра из говна и палок. Зато говно собирали по гитхабу всем отделом, а палки с любовью взращивали долгие годы.

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

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

Ангуляр не запрещает тебе этого делать, но предоставляет удобную, более декларативную замену

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

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

А какая разница между «писать HTML» и «писать адскую лапшесмесь HTML и JS»?

HTML тебе знать придется, вместе со всеми вытекающими.

Знать - да, но вот писать руками его весь не надо - JSX сгенерирует из него лишь объекты реакта, а только из них построится дом. На этом уровне я могу управлять объектами дома непосредственно как JS-объектами, то есть иметь в своем распоряжении все возможности языка программирования, а не языка разметки.

loz ★★★★★
()

1. Самое главное, что бы ты понимал что RESTful сервис не ограничивается сайтиком, и возня со всякими ангулярами не из-за того что мейнстрим. Это тебе API и для твоего телефона, и для микроволновки, и для веба и т.д. Т.е. это унификация коммуникаций с сервером, а какой там ангуляр этот API использует - дело десятой важности.
2.Какое положение дел? Положение дел сейчас такое, что ЦА ангуляра по большей части хипстеры, а в продакшене использую extJS уже много лет как, и тенденций к отказу я, к примеру (хотя я бекенд, вообще то...) не вижу. Нет, у нас были проекты на ангуляре,но каких то киллер фич, из-за которых стоит бросить существующие технологии у него нет. Да, он проще с точки зрения архитектуры, его легче поддерживать. Но с точки зрения реализации продукта, extJS в лидерах, ибо гибче, мощнее, удобнее.

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

На самом деле, многие программисты совершенно не могут в нормальную верстку. Есть большая разница между «писать HTML» и делать действительно правильную верстку, кроссбраузерную и поддерживаемую, к тому же делать ее быстро, а не выдавать по 5 строк html/css после каждых двух часов в гугле и на stackoverflow.

Опять согласен, супер сложной версткой я не занимался, и сам бы послушал опыт людей с отдельным верстальщиком. Навскидку в реакте все так же можно по-старинке иметь отдельный HTML-макет и в него добавлять реактовые элементы, реакт не заставляет уносить всю разметку в JS. (хотя мне, например, так удобнее)

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

Но с точки зрения реализации продукта, extJS в лидерах, ибо гибче, мощнее, удобнее.

Так он же тоже MVC/MVVM, реакт, например это следующий уровень.

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

Да, но разговор не о паттернах проектирования, а об инструментарии.
Кроме того, насколько я понимаю, extJS не реализует конкретный паттерн, там есть задатки MVC, но реализовать свою архитектуру там не составит труда (что вызовет сильную анальную боль а ангуляре).

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

Это проблема произрастания руки из анальной жопы.
Переписывать говнокод с какого-нибудь моднявого жквери или ещё какого-нибудь фреймворка на ванильку приходится не реже.

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

Прикинь, они нужны.
Может ты ещё не знал что сисадмин к отделу разработки не имеет никакого отношения?
Программист и тыжпрограммист — разные сущности.

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

Запятые за тебя твоя машина расставлять не умеет.
А если бы умела — ты бы стал ещё более безграмотным на такой-то радости?

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

Вы там по два раза все контролы программируете или верстальщики сразу ангуляро-дружелюбные анимации/слайдеры/попапы/w/e делают?

современный HTML и CSS - не такие уж простые и примитивные инструменты

Все наоборот: зоопарк - ушел, флексбокс - наступил, автопрефиксеров для css - миллион. Не смочь чтото заверстать сейчас очень трудно, особенно если не поддерживать мертвые браузеры. Верстальщиком же быть бесполезно, либо он сразу делает контролы на фреймворке и по сути джун погромист или за ним потом все переделывать и профилировать [для фанатов 60fps]. От вестальщиков может быть толк только в под ключ визитках, но зачем там ангуляр? В нормальных приложениях часы на заверстать vs запрограммировать и поддерживать на столько не сопоставимы, что надо наверное человек сто иметь на фронтэнде, чтобы загрузить верстальщика фуллтайм.

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

Мне кажется extjs это только энтэрпрайз [с кодогенерацией или бюджетами]. Там все еще нужно скины делать, чтобы контролы выглядели как веб, а не как 1999?

Ну и если говорить о монстро библиотеках для интерпрайза нельзя не вспомнить closure.

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

флексбокс - наступил

Я почему-то уверен, что большая часть «fullstack веб-разработчиков» или не знает про него от слова совсем, или думает, что это что-то из далекого будущего. Также как продолжают лепить jQuery animate вместо простейших CSS-анимаций и т.д. и т.п.

Не смочь чтото заверстать сейчас очень трудно

Речь не про «смочь», а про «сделать быстро (за минимум времени), эффективно и поддерживаемо». Конкретно со мной в комнате сидит пара человек, к которым может прибежать менеджер и сказать «ой, мы вот тут запилили небольшой редизайн (== полностью поменяли страницу), надо бы быстренько сделать». И эти ребята берут и буквально за несколько часов все делают и отправляют на тестирование. Я б так не смог, хотя в принципе в жизни не одну страницу сверстал.

он сразу делает контролы на фреймворке

А сами контролы кто должен делать, или хотя бы брендинг для них, если компания таки берет полностью готовый фреймворк (которых не бывает, везде чего-то не хватает)?
Уж библиотечные-то контролы должны быть максимально оптимизированные и безглючные.

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

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

Запятые за тебя твоя машина расставлять не умеет.
А если бы умела — ты бы стал ещё более безграмотным на такой-то радости?

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

loz ★★★★★
()

Бери реакт. А на кложуре «reagent».

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

потом небольшую высокоуровневую обвязку над XHR

XHR и так высокоуровневый. А обвязку над XHR или «фреймворковым XHR» придется в любом случае делать, т.к. врятли фреймворковая абстракция идеально впишется в проект. И будет у тебя абстракция над абстракцией. Я пользовался поделками над XHR от jquery, backbone, angular. Зачем? Потомучто казалось, что DOM сложный. Оказалось не сложный

А еще, как-то у нас уже много модулей, надо бы для них какой-нибудь реестр, а то и dependency injection

Это ж сколько должно быть модулей в проекте, если нужен реестр? Десятки? Сотни? Беда какая. Без проблем живут в глобальном контексте. Поскольку js распространяется в виде текста, неудивительно что придумано миллионы разных трансляторов, склеивателей и прочего шлака. Но это не означает, что ими надо пользоваться. Вот будет нативный ES6 - тогда поглядим на модули (хоть это и не критично вовсе)

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