Какой основной стек технологий на front-end SPA ваша команда использовала за последний год работы на дядю (офис)?
Для раздумья о моей передислокации в офис, хочу представить текущую тенденцию касательно используемых технологий, но та что в гугле, не лишена маркетинговых трюков, да и свежесть не та. В офисе, увы, не ты решаешь на чем писать, по этому, возможно придется менять свои предпочтения=(.
В мелких веб студиях, почти уверен, будет в основном священный Angular в качестве MV*, но преимущественно интересуют как обстоят дела с предпочтениями в средних и крупных софтверных компаниях, с более-менее серьезными проектами в midle-term+.
Вообщем, что ваша команда использовала хотя бы в качестве MV* патерна за последний год для SPA? В принципе, можно и более полный FrontEnd стек озвучить, не повредит.
Собственно моя команда использует Angular уже где-то два с половиной года, и в принципе мы довольны. Особенно радует Angular2, который судя по тому что можно видеть, уже не особо страдает болячками 1.x версии. Не вижу смысла переходить на ReactJS, хотя он в списке потыкать (уже год). Основная боль - привить разработчику компонентный подход в Angular и с таким раскладом жить становится не так уж плохо. Особенно с ES6/7 в варианте babel. На Ember смотрел но опять же не вижу смысла. Кроме ember-data там для меня нет ничего особо интересного.
Для сборки ранее использовали просто gulp и кучу тасков, сейчас это scss/less в зависимости от проекта и webpack в качестве бандлера. Я все надеюсь перевести все на jspm + system.js но увы пока ранова-то.
Для тестов пока используется mocha, потихоньку хочется перейти на cucumber.js (на бэкэнде используем Behat, так что подружить их вместе и гонять одни и те же фичаспеки кажется логичным).
ладно, свежесть та=) но это все ровно частично сферический конь, который может не отображать реальное положение дел в корпоративном софтдеве Украины/Росии да и базироваться на личных предпочтениях.
Digital Brain: ну как бы вы же понимаете что это все весьма субъективные вещи? Фреймворки нынче все ближе и ближе друг к дружке по возможностям и архитектуре, и выбор их весьма субъективен. Все же важен не фреймворк а команда.
Ну и да, скажем в Беларуси найти толковых разработчиков под Angular оказалось не так то просто, хоть их и больше чем под всякие реакты и т.д. На Украине с этим чуть проще. А в России как оно - без понятия. Вообще создается впечатление что из всей этой массы фронтэндщиков которые вечно тусуются на конференция и т.д. интересными являются не такая уж большая часть людей.
Вот и я так, только с angular1.x, потыкал, вызвал стойкое отвращение, и остался на backbone/ember =) Хотя 2-й не смотрел, ведь вряд ли концепция поменялась. Но видно это неизбежно...
Digital Brain: у меня отвращение вызывает backbone, хотя частенько использовал его для реализации моделил в рамках angular приложения.
А чем вызвано "отвращение"? Вот просто интересно. Посмотрите например на Polymer, это грубо говоря более строгая и продуманная идея директив ангуляра 1-ого. Если руководствоваться именно такой концепцией, разбиение на компоненты (директивы) со своими контроллерами, как самостоятельные мини-приложения, то тогда ангуляр становится няшкой. Где-то с версии 1.3 ангуляр можно уже использовать без отвратительных вещей которые были во времена 1.0 и 1.1. Ну а если используются толстые контроллеры, все разделено максимум на состояния каким-нибудь uiRouter - то тут да... печаль беда.
Сергей Протько: меня сама концепция "расширения HTML" директивами не радует. Это уже интернетах давно превратилось в холливар. Но так оно для меня и подобным мне. Angular имеет и преимущества для некоторой аудитории c быстрым входом, или чтоб "набросать" максимально быстро, тогда он крут. Иначе я не не вижу причин его использовать и превращать верстальщика в программиста и наоборот. Есть код, есть шаблоны, есть программист, есть верстальщик- все прекрасно... Кроме хваленных директив, там нет ничего особенного, чего нет у других. Мне и обычных модулей хватает и я люблю чистоту и контролируемость кода, так что он не по мне, этот хак html'a.
Digital Brain: сразу видно что вы не работали с ангуляром в плотную. Все же чуть поясню что бы развеять немного смуты вокруг этих холиваров. Вдруг будет полезно.
Как вы наверное знаете, декомпозиция это одна из самых важных концепций в программировании (и не только). Less is more как говорится. Годами люди старались изолировать поведение из UI-ных компонентов различными способами, что бы позволить разработчику просто и удобно использовать их в большом приложении. Сделать это можно множеством способов, ангуляр просто предоставляет таковой из коробки.
angular-вские директивы это закономерное развитие идеи декомпозиции UI и изоляции изменений. В купе с введением HTML5, который позволяет нам свободно добавлять свои элементы и атрибуты в разметку, стало возможным изоляция на уровне элементов. Вам нужно вставить дата пикер? Просто пишем
и все, нас не заботит реализация данного элемента. Аналогичный пример - использование video или audio элементов. Они так же имеют поведение, но вас же это не смущает, правда?
Так как HTML по природе своей декларативен, это так же дает определенную гибкость. Вместо того что бы манипулировать с DOM напрямую, мы можем описать как это должно происходить а компоненты сделают все за нас. Из приятных мелочей, с таким подходом возможно организовать горячую подмену шаблонов (например так возможно делать в reactjs, есть так же эксперементальные реализации для angular 1.x). Что нам дает эта мелочь? Те самые верстальщики, которые будут делать шаблоны, смогут задать какой-то прекондишен в приложении и изменение шаблонов не будет вынуждать нас перезагружать и, как следствие, терять состояние системы. Это экономит массу времени.
Angular-овские директивы, какими бы страшными и местами убогими они небыли в версии 1.0, дали толчек к развитию концепции web-компонентов. И это вполне себе логичное развитие. ReactJS использует схожий подход, Ember второй вроде бы тоже (не уверен). Angular2 вместо старых директив использует надстроку над web-компонентами. Появились штуки типа Polymer-а (на котором к слову работает google music). Много кто использует тот же Backbone вместе с полимером или реактом.
ES2015 + Angular 1.4+ весьма похож очертаниями на то, чем будет Angular2. А по поводу "быстро и на коленке всяким верстальщикам" - ну да, тут его так же можно использовать, хотя меня этот вариант сильно расстраивает. Как по мне это неплохой себе HMVC фреймворк.
Как-то так. Уж простите, меня слишком задевают фразы аля "хак html, шаблоны, верстальщик на коленке"... Справедливости ради стоит заметить что на ангуляре легко все сделать плохо, и у меня уходит довольно много сил что бы не допустить этого в своей команде (когда кто-то новый приходит, уходит где-то месяц что бы человек понял как примерно надо готовить ангуляр). Да я сам много шишек с ним набил пока не разобрался что к чему.
Сергей Протько: ну я так же использую компоненты, эта ж не монопольная фишка angular, как Вы и сказали многие имеют свою реализацию компонент, в принципе вполне удобно с веб-компонентами можно и без фрейма работать, но пока сыровато. Ну допустим есть у нас чистый легкий MV* типа bone, native web компоненты, какой либо шаблонизатор с биндингом если уж сильно надо- вот и все собственно что нужно для SPA. Зачем мне angular? Я получаю полную свободу, практически полное представление внутренней работы и возможность ее изменить и дополнить. Чтоб не случилось внтури я в состоянии буду это исправить.
Это конечно не причина, а мысли слух скорее: эта история напоминает в свои времена историю jQuery. Т.е якобы низкий уровень входа, защиты от дураков, высокий уровень абстракции породил толпы Г. кодеров, потому что учили как то jq и на этом все. Я это к тому, что впоследствии может вокруг angular может сформироваться сообщество с сомнительным качеством, и более менее сложные проекты будут испытывать трудности. Это еще было не раз мной замечено здесь же - вопросы про angular, но суть его это всего лишь азы js. Человек бегом сел за angular чтоб наглым образом порождать индуский код, который кому то придется переписывать=) Если чел сел за тот же backbone скорее всего он js хотя бы знает на ура.
Возможно, 2.х можно и посмотреть, если там мусор вынесли. Все таки в Украине, как ни крути, он в тренде, судя по вакансиях... чертов гугл, придется заказать футболку с I love Angular, проникнуть в команду и пересадить всех на React+BackBone =) Коварный замысел...
Digital Brain: нет конечно, если вас устраивает ваш стэк и разницы не много - то да, смысла перелазить нет. Я потому не собираюсь пока слазить с ангуляра ибо меня он всем устраивает.
Angular2 будет модульным, так что вы можете спокойно использовать из него только то что нужно вам. Монолитность 1-ого ангуляра это его серьезный минус.