Ви зустрічали людину, у якого досвідом роботи з фреймворком Angular 2 більше року? Уже. Розповім, як я туди потрапив.
В на початку 2015 роки я закінчив працювати над другим виданням моєї книжки по Java і, як зазвичай, сказав собі: «Never Again!» Робота над книгою з програмування досить виснажлива, і після дев'яти місяців зазвичай хочеться вже виштовхати цього чергового дитини.
Через пару місяців мені подзвонив редактор з видання Manning і став цікавитися, чим я займаюся і не хочу я написати книжку. Yeah, right! Я став мляво підтримувати розмову і сказав, що про Java точно писати не хочу, а зараз займаюся Web фреймворками. Справа в тому, що останні три роки наша компанія намагається знайти замінник фреймворку, який вимагає опального Флеш Плеера.
Навесні 2015 я займався AngularJS, хоча на відміну від решти світу веб розробників, мені цей фреймворк не подобався. Якщо чесно, мені і JavaScript ніколи не подобався, хоча, можливо, я так ніколи і не навчився його готувати.
Треба зауважити, що в той час по інтернету пішли чутки, що Google вирішив повністю переписати AngularJS, і що нова версія буде називатися Angular 2. Одним словом, я запропонував моєму колезі Антону Мойсеєву стати співавтором книги по Angular 2, тобто написати книгу про те , чого ще немає, і він погодився. Після року роботи, книга готова, та й Angular 2 1.0 вже ось-ось побачить світ.
As ham and hamster
Але сьогодні я хотів би поговорити ні про технічні достоїнства цього дійсно крутого фреймворка, а про те, як Angular 2 нам продають, а реліз.
Коли я почав вивчати Angular 2, мені було очевидно, що Angular 2 to AngularJS is as ham is to hamster (так, я перефразую популярне порівняння Java і JavaScript). Сьогодні, через рік, я продовжую вважати, що це два абсолютно різні продукти.
AngularJS 1.x був і продовжує залишатися найпопулярнішим JavaScript фреймворком, і ним користуються понад мільйон (!) Розробників. Думаю, хтось в Google вирішив підсісти на розкручений бренд і запропонував подати абсолютно інший фреймворк як нову версію AngularJS. Типу, Coca Cola 2. В цілому це був правильний маркетинговий хід, особливо якщо врахувати, що головним автором обох фреймворків був один і той же рок старий розробник Misco Hevery. Однак розробники створюють і різні продукти, правда?
Якби Microsoft використовував таку ж маркетингову стратегію, то вони б не назвали досить нову мову TypeScript, а просували б його як C # 2. Обидва ці мови придумані одним автором на ім'я Anders Hejlsberg, адже так? Потім вони б опублікували посібник з міграції з C # в C # 2, яке було б так само притягнуте за вуха, як і керівництво по міграції з AngularJS to Angular 2. Я впевнений, що в наступному році з'являться нові керівництва, що пояснюють, як мігрувати в Angular додатки з React, Ember і ExtJS, і ці процеси не будуть складнішими, ніж міграція з AngularJS в Angular 2.
Breaking changes
Гаразд, вистачить чіплятися до імені фреймворка. Перейдемо до версій релізів. Для книжки ми написали багато маленьких додатків, і нам доводилося їх переписувати для кожного нового альфа релізу Angular 2. Ми не скаржилися, тому що знали, на що підписувалися. У кожній альфі були breaking changes, і ми переписали всі приклади раз 20. На початку 2016- го фреймворк пішов в бету, а в травні 2016 надійшла радісна звістка: вийшов Angular 2 Release Candidate 1.
Коли мене питали в січні, чи не занадто ризиковано починати розробляти нове веб додаток з Angular 2, я впевнено відповідав «Так, фреймворк досить стабільний». Я був не правий! У своєму професійному житті я бачив багато релізів і був упевнений, що альфи завжди включають нові фічі і breaking APIs. Бети - для багфіксінга, а реліз-кандидати - для полірування продукту. Хто міг подумати, що в період між RC.1 і RC.5 і Router API і Forms API будуть повністю переписані, і з'явиться абсолютно новий API для модулів, які поміняють і внутрішню архітектуру фреймворка і завантаження додатків?
Якщо ви мене запитаєте сьогодні (в кінці серпня 2016 року), чи безпечно починати розробку нової програми на другому ангуляр, я відповім так: «Якщо Angular 2.0 НЕ буде зарелізан у вересні 2016 року, не робіть цього».
Зайдіть на StackOverflow, і ви побачите запитання на кшталт: «У мене така-то проблема. Я використовую Angular 2 RC.1 ». Якщо хто-небудь запропонує зробити апгрейд то RC.5, автор питання напише «У мене немає на це часу».
Взагалі, в світі JavaScript опенсорс рідкісний птах долетить до версії 0.5. Коли оголошується Release Candidate будь-якого продукту, пов'язаного з JavaScript, для розробників кривавого Ентерпрайза це служить сигналом «Софт стабільний. Можна використовувати в комерційних проектах ».
А хіба апгрейд з одного RC в інший може бути багатокроковим процесом? Може! Навіть керівництво по апгрейду з RC4 в RC5 є. І підзаголовок бодрячком: «Migrate your RC4 app to RC5 in minutes». Так, розповідайте. Саме цим я зараз і займаюся. У мене пішов тиждень, щоб перевести 40 маленьких додатків з RC.4 в RC.5.
З недавнього подкасту Adventures in Angular я дізнався, що, коли розробники Angular 2 вирішують, чи включати breaking changes в наступний RC, вони задають собі питання: «А чи поліпшить це Angular?» Якщо відповідь «так», то вони беруть ломик в руки ...
Михайло Жванецький колись сказав: «При чому тут борщ, коли такі справи на кухні!» Дорогі розробники другого ангуляр, мені подобається Angular 2 RC.5 таким, як він є. Будь ласка, займіться багами і перестаньте додавати нові інгредієнти в борщ! Дуже їсти хоцца! Дайте нам стабільний реліз і заспокойтеся на півроку - ми теж хочемо Релізан наші програми.
The happy ending
Angular 2 - це не просто цінне хутро. Це потужна платформа для розробки складних веб та мобільних додатків. Будучи Java розробником, я бачу, що Angular 2 може зробити такий же величезний вплив на JavaScript ком'юніті, як Spring фреймворк надав на світ Java.
Не забувайте про 15 мільйонів Java і .Net розробників, більшість яких ще не поторкали Angular 2, а коли помацати, їм сподобається!
Я працював з AngularJS, але він мені ніколи не подобався. AngularJS був (і залишається) дуже популярний, і не знати його було поганим тоном, але він мені не подобався все одно. Якщо чесно, мені не подобається ні JavaScript, ні будь-який інший JavaScript фреймворк. Однак мені дуже навіть подобається дует Angular2-TypeScript.
В кінці вересня в Лондоні пройде конференція AngularConnect 2016, і я дуже сподіваюся, що хтось вийде на подіум і скаже: «Пані та панове! У нас для вас приємне звістка. Сьогодні вийшов Angular 2 1.0 ».
У 2017 році хедхантери будуть бігати за розробниками, знаючими Angular 2. Готуйте сани влітку, if you know what I mean.