Давайте поговоримо про ES2015+ OOP-фреймворки під Node.js
Щось давно вже не було срачу стосовно Node.js, аж скучати вже почав. Тому, як говориться, let’s get ready to rumble.
Як я бачу зараз тему у світлі останніх нововведень ES2015 + TypeScript: для Node.js повинні з’явитись нові фреймворки, які дозволять створювати великі проекти, більші, ніж на PHP.
Чому так? Ну, по-перше, TypeScript це прямо мега-мега круто! Він дозволяє дуже суттєво зменшувати кількість помилок у коді. А чим менше помилок, тим більший проект можна будувати.
Про те, що TypeScript це НЕ мага-круто, може говорити лише той, хто його не використовував, або той, хто поколупав його пару годин, зачепився за якусь шараховатість у вигляді відсутності TypeScript-бібліотек, або у неможливості написати TS-вираз з потрібною сігнатурою і т.д., і пішов далі незадоволений.
Я і сам його почав неохоче використовувати, бо Angular 2+ написаний на ньому, ну і не були явними ті переваги, які надає TS. Спочатку я думав, що статична перевірка TS зводиться до перевірки найпростіших типів, таких як string, number і boolean. Але насправді, звичайно ж, це лише мікро-частина з того, що вміє TS...
Коротше, TypeScript дає ті будівельні лі́си, які дозволяють будувати справді великі проекти, зокрема і під Node.js. Можна навіть уточнити, що проекту, типу «гостьова книга» (тобто самому елементарному), теж не завадить використання TS.
Йдемо далі.
Які асоціації існують до тепер у розробників, які згадують про Node.js-фреймворки? — Правильно — мікросервіси, чати, вебсокети... щось таке, що працює досить швидко, але створювати на ньому масштабні монолітні проекти досить стрьомно, бо... оті колбек-хели. Якщо побудувати великий проект, спробуй тоді відловити помилки.
На дво́рі зараз ES2015+ з дуже суттєвим покращенням якості розробки на JavaScript. Так говорять багато хто, зокрема й розробники Angular. Я щільно перейшов на розробку JavaScript, коли вже можна було використовувати усі переваги ES2015+ (мабуть десь у 2014 році). Перед цим я програмував на PHP, чого гріха таїти.
Тож із ES2015 + TypeScript для мене було звично використовувати ООП з класами, абстрактними класами, інтерфейсами, модифікаторами доступа, наслідуваннями... Promises для мене були чимось таким, що завжди було у JavaScript =).
Які зараз є Node.js-фреймворки, які йдуть в ногу з часом?
Ну, звичайно ж це Koa, але в ньому я побачив лише переведення старої схеми, з використанням middleware, до коду, з використанням промісів, генераторів. Ну і сам Koa майже нічого не робить, окрім надання інтерфейсу цих самих middleware. Там хоч і є один клас Application, але, здається, Koa не спроектований щоб на ньому можна було на повну використовувати ООП і будувати складні проекти.
Express.js, як говорить нам документація, теж не глобально віддзеркалив нововедення ES2015+.
Пошук по ключовим словам «nodejs oop framework» теж не густо видає релевантні варіанти.
Ну і на останок, чому я думаю що на Node.js-фреймворках можна будувати значно більші проекти, ніж на PHP. Справа в тому, що якщо проект великий, швидше за все, він розбитий на модулі, кожен із яких ініціалізує свою конфігурацію. А що таке багато коду для ініціалізації в контексті PHP? — Правильно, він її буде робити за кожним запитом, в кращому разі він делегує ініціалізацію на Dependency Injector, але все одно це не зрівняти з Node.js-фреймворками, які усю ініціалізацію (на рівні application) роблять єдиний раз при старті...
Виходячи з вищезазначеного, думаю час вже створити нарешті сучасний Node.js-ООП-фреймворк. Я вже попи́сую свій, але ще рановато його представляти.
Цікаво почути думку форумців на ДОУ. Може вже є такі фреймворки, чи може вони теж пишуть свій лісапет.
Найкращі коментарі пропустити