Node.js се използва за създаване на бързи сайтове и уеб приложения, които имат голям трафик. А ползите от Node.js са, че разработчиците могат да работят с една и съща технология по front-end и back-end частта от проекта. Това е голямо улеснение при разработката, което позволява по-бързото създаване на специфични сайтове и приложения. Което пък прави по-щастливи и разработчиците, и компаниите, в които работят.
Node.js е Open Source приложение, работещо на сървър, което създава среда за изпълнение на JavaScript код. Задвижва се от JavaScript двигателя на Google V8. Моделът му на опериране е задвижван от събития с неблокиращи I/O операции, което го прави лек и ефективен. Тези характеристики са повод много разработчици и компании да го използват.
След като вече знаем какво е Node.js, идва въпросът и за какво се използва? Освен характеристиките му, какви реално са ползите от Node.js, заради които разработчиците и компаниите го избират за своите разработки и приложения?
Ако попитаме някой разработчик „Защо Node.js?“, ще получим някое от следните определения: бърз, лесен, страхотен, мощен, гъвкав и дори приятен, но какво всъщност означава това?
Тъй като Node.js приложенията всъщност са JavaScript приложения, голяма част от ползите се базират на качествата и възможностите на самия скриптов език JavaScript.
Node.js е много бърза платформа за задвижване на приложения, комуникиращи в реално време
За разлика от създаването на отделен процес или нишка за всяка отделна заявка, както е при PHP например, при Node.js процесът е само един. Изпълнението му се задейства от събития. За да не бъде блокиран този един процес, още при създаването на приложението се използва неблокиращ програмен метод. Неблокиращото програмиране отделя времеемките и тежки изчислителни задачи от основното изпълнение на процеса, позволявайки в това време да се приемат и обработват други заявки. Също така се прилага разбиване на дългите задачи на малки и бързи за изпълнение. За задачите, които се изпълняват странично от основния процес, е указано какво трябва да се случи, след като бъдат завършени – поражда се събитие и се пуска в цикъла за събития (event loop). Блокиращи операции може да са заявки към външни услуги, запитвания към базата данни и други.
Този метод на работа позволява на Node.js да поддържа и обслужва много голям брой едновременни връзки.
Това е причината да се казва, че Node.js е подходящ за приложения с нужда от интензивна комуникация (обмяна на данни), но не и за такива, които са CPU интензивни (обработка на данни).
Node.js се използва за сайтове с много голям трафик
Заради скоростта и ниския профил на консумация на ресурси, Node.js се използва за всякакви уеб, десктоп и мобилни приложения, които имат много голям трафик и нуждата да се справят с голям брой заявки в реално време. Например чатове, инструменти за показване на данни от мониторинг (табло – dashboard), прокси, стрийм на данни и други.
Сайтовете, използващи например PHP, генерират уеб страницата на сървъра и подават към клиента HTML кода ѝ. Node.js приложенията не е нужно да генерират страниците на сървъра. Вместо това целият статичен HTML код на страницата може да се сложи в JavaScript темплейт. След това този темплейт се изпраща на клиента, и тъй като е статично съдържание, може да се кешира (в браузър, в CDN). След това към клиента се подават само динамичните данни (в JSON формат), които се попълват в страницата-темплейт.
Node.js приложенията може да са SPA (single page application), които комуникират в реално време (не чакат клиентът да ги попита за нещо). Тези приложения приличат повече на приложенията, с които работим на компютъра – програма с един прозорец, в който се извършват всички действия. Този начин на работа на Node.js приложението има съществени ползи – много бързо зареждане и работа на сайта, силно намалена консумация на сървърни ресурси като CPU, памет и други.
Тези характеристики правят Node.js една много бърза платформа за задвижване на приложения, комуникиращи в реално време. Неслучайно Node.js се използва от компании като LinkedIn, Netflix, PayPal и е водещ избор за силно натоварени сайтове.
Няколко примерни сайта, които използват Node.js:
https://w3techs.com/sites/info/speedtest.net
https://w3techs.com/sites/info/twitter.com
https://w3techs.com/sites/info/thesaurus.com
Node.js „качи“ JavaScript на сървъра
JavaScript е създаден за уеб, за да раздвижи статичната страница и да е лепило между съществуващите вече HTML и CSS. Раздвижването е възможно, тъй като уеб браузърът разбира и изпълнява JavaScript кода, който е част от HTML страниците.
JavaScript е лесен за използване от уеб дизайнерите и уеб разработчиците и се използва в уеб повече от 20 години (първо появяване декември, 1995 г.).
До преди 2009 г. JavaScript се свързваше единствено с клиентската (front-end) част на сайта, която работи в браузъра. Има създадени много JavaScript front-end библиотеки.
След качването на JavaScript на сървъра (back-end) чрез Node.js, се отвори нова възможност за използването на езика и създаването на приложения. Това, от своя страна, доведе до създаването на много JavaScript back-end библиотеки и инструменти, които работят на сървъра. А вследствие на това се появиха и пълни комплекти (full stack) от JavaScript технологии, събиращи клиентските и сървърните технологии и други между тях (MEAN, MERN).
Богата JavaScript екосистема от софтуерни пакети, библиотеки, инструменти и компоненти
Наличието на свободно достъпна JavaScript библиотека или инструмент, който е подходящ за почти всяка задача, с която се сблъскват разработчиците, оказва голямо влияние за предпочитането на тази технология и постоянното разрастване на популярността ѝ. Не е нужно да се открива колелото, спестява се време, енергия и ресурси.
NPM (мениджърът по подразбиране за пакети към Node.js) дава свободен достъп до над 836 хиляди JavaScript библиотеки и инструменти. NPM играе важна роля за повишаването на популярността на Node.js.
„97% от кода в модерните уеб приложения идва от npm“
„npm има над 10 милиона потребители, които изтеглят над 30 милиарда JavaScript модула за месец“
the npm blog
Популярността на JavaScript, Node.js и NPM се подхранва в затворен кръг, всяко едно допринася за популяризирането на всяко друго.
Съществува цяла JavaScript екосистема от софтуерни пакети, библиотеки, инструменти, компоненти и други ресурси, които се използват в етапите на целия процес на разработката.
Приложения и инструменти, използвани при разработката на JavaScript приложения:
- Front-end библиотеки и интрументи: React, Svelte, Vue.js, Preact, Angular, Ember и други.
- Back-end платформи и библиотеки: Express.js, Next.js, Nuxt, Hapi.js, Koa, Feathers, Meteor.js, Sails и други.
- Редактори на код: Sublime Text, Atom, Visual Studio Code.
- Тестване и дебъгване: Инструменти за тестване на кода, преди да се пусне в употреба като Jest, Cypress, Storybook, Puppeteer, Mocha, Enzyme, Jasmine и други. Някои инструменти са вградени в платформите или софтуерните рамки. Има и такива в браузъра като Google DevTools, Mozilla Developer Tools.
По-бърза разработка и създаване на приложения
Използването на един език при клиента и на сървъра позволява преизползването на компоненти и ресурси (код, разработчици). Не е нужен специализиран разработчик в някой от обичайно използваните на сървъра езици като Python, PHP или друго. Всеки разработчик, който разбира от JavaScript в браузъра, може да работи с JavaScript на сървъра.
Заради възможността да се използва по-малък екип от разработчици, както и да се преизползва оптимално вече съществуващ код, се спестяват много време и ресурси. Което довежда до по-бърза разработка и създаване на приложение, както и по-удовлетворени разработчици.
Щастливи разработчици (и компании)
Използването на Node.js има положителен ефект върху бизнеса, основно заради повишената продуктивност и повишеното удовлетворение на разработчиците. След това са намалените разходи по разработката и повишената производителност на приложенията.
Node.js хостинг (статичен или динамичен сайт)
Node.js може да се използва както в уеб хостинг услугата (споделен хостинг, Managed VPS), така и на собствен виртуален сървър (VPS).
🔗 Node.js хостинг | Help
🔗 Създаване на виртуална среда за Node.js приложения в cPanel | Help
Статичните сайтове се генерират от „генератори на статични сайтове“. Вместо база данни, се използват обикновени текстови файлове, които генераторът конвертира в HTML страници. Пример за статичен сайт генератор на JavaScript: Gatsby https://www.gatsbyjs.com/docs/. Съществуват и много други като Gridsome, Next.js, Hexo, VuePress, Docsify, Docusaurus.
А за управление на статичното съдържание на сайта в хостинг акаунта, може да се използва Git (управление на версиите на текстовите файлове). Още по темата за Git и ползите му: 🔗 Какви са ползите от Git и за какво се използва? | Blog
Динамичните сайтове използват база данни. Такива сайтове може да се разработят с помощта на платформи като Express.js или да се създадат с готова CMS платформа. Няколко примера за CMS платформи: Ghost, Reaction Commerce JS, Sanity Studio, Strapi, KeystoneJS.
Бележка: Някои Node.js приложения, платформи и генератори на статични сайтове могат да функционират само на собствен виртуален сървър (VPS), поради нуждата им от специфични технологии и настройки, например SPA приложенията и такива, използващи база данни като MongoDB.
Заключение
JavaScript е динамичният език, който работи в браузъра от много години. С качването му на сървъра стана възможно създаването на приложения, които до преди това са били възможни само с други, външни на браузърната среда, технологии като Flash например.
Съществуват много и различни технологии, програмни и скриптови езици и начини за разработка. Изборът, дали ще е Node.js, или не, може би зависи от това дали в момента екипът Ви разбира много добре от JavaScript и е отворен за новостите и Node.js.
Ползите от Node.js облагодетелстват всички замесени страни – разработчиците, които се радват на JavaScript, компаниите, които се радват на зарадваните си разработчици и намалените разходи и потребителите, които се радват на потребителското си изживяване с високоскоростните приложения, работещи в реално време.
А през 2018 г. създателят на Node.js Раян Дал сподели за някои свои грешки, които е допуснал при създаването на Node.js и обяви новата си (по-добра?) идея за сървърна платформа, която задвижва JavaScript – Deno. Дали Deno ще се окаже наследникът на Node.js, е рано да се каже още. Първата официална версия на Deno е пусната май 2018 г., а най-новата към момента е от 21 юли 2022 г. Темата доби още един интересен аспект, така че ще следим за развитие!
Абонирайте се за СуперБлога, за да научавате първи най-важното и полезното от света на уеб, касаещо Вашия сайт и дигитално развитие.