
Минулого тижня я побував на цікавій для всіх фронтенд-розробників події — JS frameworks day 2016. Відбулася вона в готелі «Ramada Encore Kiev» на Столичному шосе. І хай вас не лякає віддаленість від метро — дуже добре організований підвіз звів до нуля усі незручності.
На саму конфу я трохи запізнився, але все ж потратив на половину лекції Мартіна НауманнаLife of a pixel: Web rendering performance Shaders — unlocking the GPU with JavaScript. Цікава інформація, але більше потрібна розробникам ігор.
Далі у мене був вибір між Angular Components, DevTools — an Animated Journey, Spec driven development in Microservices і Behind the terminal. Якби я не читав до цього про Angular Components, то пішов би туди, але так як з цією темою вже на «ти» (я так думаю :), то вибрав іншу. DevTools браузера Chrome — потужна штука, там для тестування веб-додатків є все, чого душа забажає, але моєму серцю припала інша тема, DevTools вибачай! Behind the terminal — це про графіку за допомогою canvas, але в терміналі, теж досить цікаво.
Мікросервіси і специфікація
Сам я обрав Spec driven development in Microservices від Нікіти Галкіна. Зараз дуже популярно і модерно використовувати в своїх проектах мікросервіси. Те, що сервіси зв’язані між собою лише REST API, дає необмежені можливості для написання кожного окремого модуля на тій мові програмування, яка найкраще підходить для даної задачі. Завдяки цьому можна максимально швидко і гнучко розробляти комплексний продукт і, разом з тим, повторно використовувати свої мікросервіси в роботі.
Специфікація — актуальна тема, адже, коли немає конкретної домовленості з backend-розробниками, може статися так, що ви отримаєте від кожного з них одну й ту ж помилку у різних форматах для одного й того ж проекту. Цікаво було дізнатися про стандартні інструменти для написання специфікації. Це RAML, Swagger і API Blueprint. Сам Нікіта використовує RAML і JSON Schema Validator.
На питання про швидкодію JSON Schema Validator Нікіта відповів, що на його проекті на Java на першому місці була підтримка стандартів різних мов, яку забезпечував JSON Schema Validator, тому інструмент вибирався саме за цим параметром. В IT зараз справді стільки нового, що досконалі знання всього навіть у своїй сфері залишаються недосяжним ідеалом.
А так контракт між розробниками необхідний, і використовувати його в проектах, особливо великих, дуже важливо, інакше кожен робитиме все по-своєму, а так іде перевірка, і за відхилення від договору валідатор буде бити по пальцям.
React чи не React
Далі «у меню» були: Real-life React, Ember.js 2 — майбутнє дружні амбіційні додатки, що масштабуються, Acceptance Testing in NodeJS: Tools & Approaches і Workshop: Shaders — unlocking the GPU with JavaScript. Мене цікавили відразу дві теми — React та Ember. Трохи важкий вибір, хотілося побувати у кількох місцях одночасно, але, на жаль, я не багатозадачна машина і не можу розділитися на декілька юнітів і відвідати відразу кілька доповідей. Так як Ember для мене займає одну нішу з Angular, я вирішив побачити і почути про трохи іншу концепцію — React.
Роман Якобчук на своїй доповіді Real-life React розповідав, де не варто використовувати React. Так як ця JS-бібліотека дуже гнучка і в неї є свої особливості, необхідність налаштування середовища та специфічність, на інших фреймворках і бібліотеках певні задачі можна організувати набагато швидше.
Також React — це не фреймворк, що є як плюсом, так і мінусом. Плюс полягає в тому, що його можна використовувати з будь-якими іншими системами, адже React займається лише UI. До мінусів можна віднести те, що тут немає заготовок і конкретної структури написання коду. Це призводить до того, що кожен девелопер пише свій власний велосипед. React гарно підійде для проектів, де потрібна велика швидкодія, а ще він добре ладнає з іншими JS-бібліотеками. На власному досвіді Роман розповів, як поступово пересадив компанію на React. Також розказував, що дуже не любить в об’єктному програмуванні наслідування, жити не може без FRP Logic, а дані в нього повинні бути в будь-якому випадку Immutable data.
Нативним додаткам — бути
Далі можна було сходити на Інтерактивні декларативні графіки на React+D3, Angular 2. Quickstart, Native JavaScript на мобільних пристроях, Workshop: Shaders — unlocking the GPU with JavaScript. Тут мене найбільше зацікавила тема Native JavaScript на мобільних пристроях.
Олена Жукова розповіла про основні способи та інструменти написання нативних додатків для мобільних пристроїв. У багатьох виникає питання про швидкодію програм, написаних на JS, але Олена порадила подивитись Chrome Dev Summit 2015, де трохи під іншим кутом розглядаються питання швидкодії, так як зараз додатки працюють переважно з інтерфейсом.
Також багато хто говорить, що для виконання на мобільних пристроях потрібна емуляція. Але якщо подивитись на те, як виконуються програми на мобільних пристроях, написані на Java, то там також відбувається запуск на Java virtual machine, тому немає ніякої різниці.
Основні платформи:
PhoneGap, на мою думку, є оптимальною технологією з перерахованих, вона підтримується на 13 платформах і має велике ком’юніті. Оскільки все виконується в браузері, доцільно, коли для чогось потрібна велика обчислювальна потужність, писати окремі модулі та бібліотеки на Java, а потім через API, яке надає PhoneGap, використовувати в аплікації на JS. Так можна легко створювати веб-аплікації, а потім без проблем імпортувати їх на мобільні пристрої.
Titanium виконується на самому пристрої, проблемна платформа, оскільки писалася за однією концепцією, а потім переписувалася під іншу. Дуже залежить від оновлень — після оновлення платформи перестає працювати. Олена зробила висновок, що цю платформу варто використовувати лише тоді, якщо до цього працювали з цією технологією.
ReactNative виконується на самому пристрої, корисно використовувати для всіх любителів React.
NativeScript виконується на самому пристрої, оновлення платформ не призводить до падіння додатку, оскільки використовує рефлексію всіх методів і класів API мобільного пристрою в JS.
Майбутнє за асинхронністю
Далі хотів потрапити на Майбутнє асинхронного програмування в ECMAScript, але переплутав аудиторії і прийшов на ES6 — Just Do It. З ES6 я вже був знайомий, тому швиденько побіг в головну аудиторію, де про асинхронність уже розказував Олексій Распопов. Послухавши його лекцію, я зрозумів, що крім мене в Житомирі є ще дуже розумні люди :)
Проблема асинхронності в JS полягає в тому, що зараз вона реалізована в колбеках, а це трохи ускладнює читання коду. Саме для цього можна використовувати нові можливості ECMAScript 6 і ECMAScript 7, котрий ще не вийшов. Поки що ці нові стандарти працюють не у всіх браузерах, але на допомогу нам приходять webpack і babel, котрі компілюють код в старий добрий ES5. Разом з тим, наш код перетворюється з пекла колбеків в гарний лінійний код.
З майбутнього асинхронності я потрапив на Борьбу з асинхронністю в JS. Це був бій не на життя, а на смерть. Максим Климишин розповідав, що є такі моменти, коли скомпільований на ES5ES7 некоректно працює в деяких алгоритмах, тому він запропонував реалізувати асинхронність за допомогою генераторів на базі CSP, котрий полягає в тому, що асинхронний код варто писати в різних каналах, котрі спілкуються між собою, реагуючи на події іншого каналу і створюючи події.
Чи потрібен UI
«На закуску» була доповідь Андрія ЛісточкінаБоти: можливо, вам не потрібен UI. На ній від нього почув цікаву концепцію і бачення майбутнього розробки додатків. Андрій говорив про те, що в минулому були дуже модні такі додатки як Фейсбук, котрі забирали максимум часу користувача і продавали рекламу. Але майбутнє не за UI, не за сторінкою, яка завантажується 2 секунди, а її круті шрифти 20 секунд, а за програмами, які за мінімум часу приносять максимум користі.
В якості прикладу Андрій навів аплікацію, котра показує йому кількість пройдених кроків за день. Інший приклад — компанія, яка не мала ніякого UI і використовувала лише поштові повідомлення і підтвердження через email про те, що кур’єр з певної області, котра визначається за допомогою GPS, прийняв чи виконав замовлення.
Наостанок
Також варто згадати про веселі конкурси, котрі були на JS frameworks day 2016. Дуже велика кількість подарунків від олівців-блокнотів, до колонок, GoPro і стрибка з парашутом. Спасали від голоду і втамовували спрагу смачні кава-брейки. Обідали смачним ланчем на 16 поверсі, де можна було насолодитися прекрасним краєвидом Києва.
Закінчилось все чудовим афтепаті, новими знайомствами, цікавою новою інформацією, не менш цінною за почуте на доповідях. Для повного щастя не вистачало якогось екстріму, але прийшло повне щастя, сходили зі Степаном і його товаришами покататись на картінгу. Я, на жаль, приїхав останнім, але як на новачка тримався непогано, тож наступного разу обов’язково приїду першим! JS frameworks day 2016 вдався :)