Node JS je open-sourcový softwarový systém, který byl navržen za účelem psaní vysoce škálovatelných internetových aplikací, hlavně webových serverů. Programy jsou psané v jazyce JavaScript, využívají model událostí a asynchronní operace pro minimální režii procesoru a maximální výkon.

JavaScript je jedním z nejoblíbenějších programovacích jazyků pro vývoj frontendu. Node.js je prostředí, ve kterém je možné spouštět JavaScript na straně serveru a tím rozšiřuje jeho použití ve vývoji back-endu. Node.js používá například PayPal pro svoji aplikaci, kterou používá více než 200 milionů aktivních uživatelů nebo Uber pro svoji mobilní aplikaci.

Aktivní komunita

Komunita vývojářů v Node.js je velmi aktivní skupina, která přispívá k neustálému zlepšování Node.js. Díky spolupráci JavaScript programátorů a jejich vstupů v rámci komunity máte přístup k mnoha hotovým řešením, částem kódu na GitHubu a mnoha dalším možnostem. Přestože je na relativně nízkém stupni vývoje, komunita se dramaticky rozšiřuje a členové se aktivně snaží nabídnout ostatním co nejlepší a nejspolehlivější řešení.

Výhody Node.js

  • Snadno se naučí. Javascript je jedním z nejoblíbenějších programovacích jazyků pro vývoj front-endu, proto téměř každý front-endový vývojář tento jazyk ovládá. Je pro ně tak mnohem jednodušší přepnout na Node.js v back-endu.
  • Volnost ve stavbě aplikací. Ruby on Rails jako Framework přináší jasná pravidla a postupy, jak vyvíjet software určitým způsobem. Naprosti tomu Node.js dává vývojářům mnohem větší prostor dělat věci po svém. Neprosazuje žádný názor, takže můžete začít stavět cokoliv na zelené louce.
  • Komplexní použití Javascriptu. Před vznikem Node.js bylo možné použít JavaScript pouze pro vývoj front-endu. Pro programování serverové strany bylo nutné použít jiný programovací jazyk. Proto bylo v praxi nutné najímat jiné vývojáře pro front-end i back-end. Nyní je možné celou aplikaci vystavět na JavaScriptu, díky čemuž je vývoj webových aplikací jednodušší a efektivnější.
  • Aktivní komunita.
  • Simultánní zpracování requestů. Node.js nabízí neblokující IO systém, který umožňuje zpracování většího počtu requestů současně. Systém tak simultánní zpracování dělá mnohem snazší nežli u Ruby nebo Pythonu. Příchozí requesty jsou zařazeny do fronty a rychle sekvenčně spouštěny. Díky tomu aplikace potřebuje méně RAM, dosáhne maximální škálovatelnosti a jako výsledek má větší výkon.

Nevýhody Node.js

  • Nestabilní API. Jednou z největších nevýhod Node.js je to, že není konzistentní. API se často mění a změny často nejsou zpětně kompatibilní. Pokud se takové změny stanou, programátoři jsou nuceni změnit existující původně funkční kód, aby byl kompatibilní s poslední verzí API Node.js.
  • Více času stráveného vývojem. Skutečnost, že Node.js neprosazuje vlastní názor může být pro některé vývojáře i nevýhodou. Například Ruby on Rails nabízí spoustu návodů od čisté instalace a provádí vás způsobem, jakým řeší problémy. Naproti tomu Node.js nutí programátora, aby napsal všechno od začátku. Může to vést k nižší produktivitě, ale pokud spolupracuje skupina zkušených programátorů, kteří interně vyvinuli dobré procesy pro vývoj a údržbu kódu, efektivita není problém.
  • Nevhodnost pro výpočetně náročné aplikace. Node.js nepodporuje zpracování ve více vláknech. Dokáže obsloužit mnohem složitější aplikace než Ruby on Rails, ale nehodí se na vykonávání dlouho běžících výpočtů. Výpočetně náročné procesy blokují příchozí requesty, což může vést ke snížení výkonu.
  • Nezralost nástrojů. I když je jádro Node.js stabilní, mnoho balíčků v npm (předinstalovaný správce balíčků, který organizuje instalaci a správu programů Node.js třetích stran) má stále nízkou kvalitu nebo nedostatečnou dokumentaci. Mnoho nástrojů nebylo zrevidováno a struktura npm dělá hledání spolehlivých balíčků obtížným.

Node.js je vhodné použít v případech, kdy se jedná o aplikaci, která běží v reálném čase a musí procesovat vysoké množství krátkých rychlých zpráv. Naopak není vhodné používat Node.js pro výpočetně náročné aplikace.