Proč k vývoji webových aplikací použít technologii NodeJS?
Barbora Koďousková
·27/03/2024
·6 min.
Technologie NodeJS svým příchodem způsobila vlnu rozruchu a negativních i pozitivních reakcí. Rozdílné názory na toto JavaScriptové běhové prostředí přitom přetrvávají dodnes. Pojďme se společně podívat, co je vlastně NodeJS zač a jaké výhody přináší do tvorby webových aplikací.
Co je NodeJS?
Běhové prostředí NodeJS, někdy též serverový framework, je technologií umožňující spuštění JavaScriptu na straně serveru. Mimo klasické frontendové využití se tím nabízí prostor pro psaní backendového kódu a s tím i částečně snižují nároky na dovednosti programátorů.
Node.js byl v roce 2009 představen Ryanem Dahlem, jako open-source, multiplatformní nástroj pro vývoj vysoce škálovatelných webových aplikací a jejich serverových částí. Jádrem technologie jsou V8 JS engine, který pohání také internetový prohlížeč Google Chrome a moduly, rozšiřující původní nástroj o další funkcionalitu (podobně jako u JS knihovny).
Jedná se o single-thread řešení. To znamená, že pracuje pouze v jednom vlákně, což podmiňuje využívání principů asynchronního programování, kdy není řešení jednoho požadavku závislé na dokončení požadavku druhého. Jinými slovy se nezdržuje čekáním na vyřešení složitějšího příkazu. Tím se minimalizuje režie a maximalizuje potenciál výkonu.
Jednotlivé klientské požadavky se ukládají do zásobníku, z něhož jsou vyjímány ve stejném pořadí, jako byly vloženy (princip FIFO). NodeJS tak funguje na událostmi řízeném (event-driven) modelu neblokujícím I/O.
Architektura NodeJS aneb jak to celé funguje
Jádrem celé technologie je tedy V8 engine, který má na starosti kompilaci do strojového kódu. Architektura Node.js přitom stojí na takzvané smyčce událostí – Event Loop. Smyčka utváří prostor pro přijímání uživatelských požadavků, jež ve formě událostí dále přiděluje jednotlivým zdrojům. Právě ze smyčky událostí a využívání jediného vlákna pak vychází potřeba asynchronní komunikace a princip fronty.
V praxi to funguje tak, že vývojář prostřednictvím Node.js vytvoří webový server, jenž bude na portu čekat na uživatelské požadavky. Jakmile nějaký požadavek zachytí, pošle ho do smyčky, která jej zadá příslušnému controlleru. V mezičase ovšem zpracovává i další, mnohdy, méně náročné požadavky.
Jakmile je původní požadavek zpracován, dojde k zavolání (callback) výsledku a následnému dokončení prvotního procesu. Složitější požadavky tak neblokují vlákno těm, které mohou být provedeny rychleji.
NodeJS vs. PHP
Výše popsaný princip utváří zásadní rozdíl mezi přístupem PHP a NodeJS. Zatímco Node poslouchá na portu a požadavky zpracovává na základě událostí ze smyčky, PHP vykonává všechny příkazy postupně. Webový server, typicky (Apache nebo Nginx), naslouchá na portu a jakmile zaznamená uživatelský požadavek, zavolá PHP kód.
PHP převezme dotaz, obsadí jím paměť a tu neuvolní, dokud celý proces nedokončí čili dokud nevykoná všechny řádky kódu. Není proto, na rozdíl od Node.js, tolik škálovatelný – nedokáže současně obsloužit tolik připojených klientů.
Úvod do vývoje webových aplikací s Node.js: NPM a moduly
Vývoj webových aplikací s využitím technologie NodeJS je podmíněn třemi body:
- pochopením principu HTTP protokolu,
- znalostí JavaScriptu,
- stažením Node.js (instalační soubor je dostupný na oficiální stránkách organizace).
K samotnému programování je zapotřebí také vývojové prostředí (IDE), například NetBeans nebo Sublime Text. Ve výsledku však postačí i Poznámkový blok, který je standardní součástí Windows.
Podobně jako u JS prostřednictvím frameworků, mezi něž patří například Vue.js či Angular.js, je i u Node.js možné rozšířit původní funkcionalitu, v tomto případě moduly. K jejich správě slouží takzvaný NPM – Node Package Manager neboli správce balíčků.
NPM je dnes již součástí instalace Node a ovládá se prostřednictvím příkazové řádky nebo vývojového prostředí. S postupem času se jeho působnost rozšířila a můžeme zde nalézt také balíčky například pro React. NPM najde své využití také při sdílení či distribuci kódu.
Při výběru bychom si měli zachovat obezřetnost a podobně, jako u instalace mobilních aplikací v AppStore nebo Google Play, se rozhodovat na základě aktuálnosti nástroje nebo reakcí ostatních uživatelů.
Moduly Node JS
Moduly Node.js představují stejně jako JavaScriptové knihovny prostředky pro rozšíření původní funkcionality. Některé z nich jsou již součástí instalace a tedy ihned k dispozici. V případě nutnosti lze nainstalovat také externí moduly, které jsou umístěné například na GitHubu. Jedná se v podstatě o ekvivalent ke gemům pro Ruby on Rails.
Využití Node.js aneb kdy zvolit toto řešení
Z popisu principu fungování NodeJS již vyplynulo, že tato technologie najde své využití u aplikací s velkým množstvím požadavků. Jedná se tak o vhodné řešení pro real-time apps v podobě chatu nebo streamování, což je ostatně důvod proč jej využívá Netflix.
Mimo to, je Node.js často spojován s tvorbou jednostránkových aplikací (SPA) nebo API. Může být ovšem užitečným pomocníkem ve všech případech, kde je nutné zkrátit dobu přístupu či mít neustále aktivní server. Proto se s ním můžeme setkat u gigantů, jako je PayPal, Uber a eBay.
Na co se naopak příliš nehodí, jsou projekty, které jsou příliš náročné na CPU. V takovém případě je vhodnější zvolit standardní synchronní řešení.
Výhody a nevýhody Node.js
Výhody Node.js již částečně vyplynuly z předešlých odstavců. Mezi ty nejzásadnější můžeme bezpochyby zařadit škálovatelnost, která otevírá zcela nové dveře rychlosti zpracování uživatelských požadavků. Zbytek kladů můžeme shrnout do následujících bodů:
- snazší osvojení jazyka – Node.js využívá JavaScript, který dnes spadá takřka do základních dovedností programátora, přechod k této technologii proto obvykle není podmíněn osvojováním nového jazyka,
- lehčí přechod mezi backendem a frontendem – JS se používá pro obě roviny,
- aktivní komunita – s čímž souvisí široký výběr modulů a podpora,
- menší nároky na výkon – využívání sekvenčního spuštění fronty klade menší nároky na operační paměť.
Ani v případě NodeJS však nesmíme zapomenout na nevýhody. Ta zásadní souvisí právě s aktivní komunitou a neustálým vývojem, který v důsledku znamená nestabilitu API. Rozhraní v mnoha případech nebývají zpětně kompatibilní. Musí se tak změnit kód, aby mohla bezproblémově komunikovat s nejnovější verzí Node.
Pokud plánujete Node.js zakomponovat do svého nového projektu, nebo s jeho využitím předělat stávající webové aplikace, neváhejte nás kontaktovat prostřednictvím naší bezplatné konzultace, kde společně jistě vymyslíme vhodné řešení, vytvořené na míru vašim požadavkům.
Máte nápad na nový projekt?
Popište nám ho! Rádi odpovíme na všechny vaše dotazy, nebo rovnou domluvíme termín schůzky.
Ozvěte se Vítovi! Vše s vámi projedná a probere.
Vít Uličný
Zakladatel & CEO