Node.js je multiplatformní běhové prostředí pro JavaScript navržené pro vytváření vysoce škálovatelných internetových aplikací, především webových serverů; lze jej však používat i pro vytváření programů pro prostředí příkazového řádku.

Node.js umožňuje spouštět JavaScriptový kód mimo webový prohlížeč; je dostupné pro Linux, MacOS, Microsoft Windows, Unix a další systémy. Skládá se z JavaScriptového engine V8 od společnosti Google a několika standardních knihoven. Jde o otevřený software s licencí MIT. Možnost spouštět kód v JavaScriptu na serveru se často používá pro generování dynamického obsahu webových stránek před odesláním stránky do webového prohlížeče uživatele. Node.js tak představuje paradigma „JavaScript všude“ sjednocující vytváření webových aplikací v jediném programovacím jazyce, na rozdíl od používání různých programovacích jazyků na straně serveru a na straně klienta.

Node.js používá architekturu řízenou událostmi, která umožňuje asynchronní vstupní a výstupní operace pro minimalizaci režie procesoru a maximalizaci výkonu s cílem optimalizace propustnosti a škálovatelnosti WWW aplikací s mnoha vstupně/výstupními operacemi, včetně webových aplikací pracujících v reálném čase (například pro programy pro komunikaci v reálném čase a webové hry běžící v prohlížeči).

Node.js vytvořil v roce 2009 Ryan Dahl a následný rozvoj byl sponzorován jeho zaměstnavatelem, firmou Joyent.Why Everyone Is Talking About Node, By Jolie O'Dell, March 10, 2011, Mashable Další distribuovaný vývoj Node.js byl řízen nadací Node.js Foundation, která se v roce 2019 spojila s JS Foundation. Vzniklá OpenJS Foundation je podporována programem Collaborative Projects nadace Linux Foundation.

Node.js byl oceněn webem InfoWorld (zabývajícím se internetovými technologiemi) jako Nejlepší technologie roku 2012 a podle průzkumu Stack Overflow Developer Survey z roku 2025 patří k nejčastěji používaným WWW technologiím.

K podobným projektům napsaným v jiných programovacích jazycích patří Twisted pro jazyk Python, Perl Object Environment pro Perl, libevent pro C a EventMachine pro Ruby. Na rozdíl od většiny JavaScriptových programů není spouštěn v internetovém prohlížeči, ale na straně serveru. Node.js implementuje některé části ze specifikace CommonJSImplementations/node.js – CommonJS Spec Wiki a je možné ho používat i interaktivně pomocí přiloženého interpretru REPL.

Historie náhled|Ryan Dahl, autor Node.js, v roce 2010|alt= náhled|Rocket Turtle, oficiální maskot Node.js od února 2024|upright=0.7 Node.js vytvořil Ryan Dahl v roce 2009, 13 let po uvedení LiveWire Pro Web společnosti Netscape, prvního JavaScriptového prostředí na straně serveru. Dahl představil Node.js na první evropské konferenci JSConf 8. listopadu 2009.Sams Teach Yourself Node.js in 24 Hours, Sams Publishing, 05-Sep-2012 Dahl kritizoval omezenou funkčnost Apache HTTP Serveru při obsluze mnoha (více než 10000) souběžných spojení a sekvenční programování, při jehož používání může aplikace zablokovat všechny procesy nebo způsobit vytvoření několika zásobníků provádění pro současná spojení. První vydání Node.js podporovalo pouze Linux a Mac OS X. Jeho vývoj a údržbu prováděl sám Dahl a později jej sponzorovala firma Joyent.

Node.js kombinoval JavaScriptový engine V8 společnosti Google, smyčku událostí a nízkoúrovňové API pro vstupy a výstupy.Professional Node.js: Building JavaScript Based Scalable Software, John Wiley & Sons, 01-Oct-2012

V lednu 2010 byl představen správce balíčků pro Node.js nazývaný npm. Správce balíčků byl navržen s cílem zjednodušit instalaci, aktualizaci a odstraňování balíčků a umožnit programátorům publikovat a sdílet balíčky pro Node.js včetně zdrojového kódu.

V červnu 2011 Microsoft a Joyent implementovali nativní verzi Node.js pro Microsoft Windows. První sestavení Node.js pro Windows bylo vydáno v červenci 2011.

V lednu 2012 Dahl získal pro správu projektu autorovi npm Isaacu Schlueterovi. V lednu 2014 Schlueter oznámil, že projekt Node.js bude vést Timothy J. Fontaine.

Kvůli nespokojenosti s Joyentovým řízením vytvořil Fedor Indutny v prosinci 2014 io.js, odnož Node.js jako alternativu s otevřeným řízením a samostatným technickým výborem. Cílem bylo, na rozdíl od tehdejšího přístupu Node.js, vytvořit strukturu otevřenější k podnětům komunity a aktualizovat io.js na nejnovější verzi JavaScriptového jádra Google V8.Q&A: Why io.js decided to fork Node.js, InfoWorld Tech Watch

V únoru 2015 byla založena Node.js Foundation s cílem sjednotit Node.js a io.js. Sloučení proběhlo v září 2015, kdy se Node.js v0.12 a io.js v3.3 spojily do Node v4.0. Toto sloučení přineslo do Node.js funkce V8 ES6 a zahájilo cyklus vydání s dlouhodobou podporou. V roce 2016 web io.js doporučil návrat k Node.js a oznámil, že další verze io.js nebudou vydány, čímž fakticky ukončil odštěpení a potvrdil sloučení.Io.js, JavaScript I/O, "io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above."

V roce 2019 se JS Foundation a Node.js Foundation sloučily do OpenJS Foundation.

Branding Logo Node.js tvoří zelený šestiúhelník s překrývajícími se pruhy, které symbolizují multiplatformní povahu prostředí. Za oficiálního maskota Node.js byla v únoru 2024 po výtvarné soutěži vybrána Rocket Turtle.

Popis Node.js umožňuje vytvářet webové servery a síťové nástroje pomocí jazyce JavaScript a sady „modulů“, které poskytují různé funkcionality.Smashing Node.js: JavaScript Everywhere, John Wiley & Sons, 14-Aug-2012 K dispozici jsou moduly pro vstupy a výstupy používající souborový systém, síťové funkce (DNS, HTTP, TCP, TLS/SSL a UDP), pro práci s binárními daty a vyrovnávacími paměťmi, kryptografické funkce, práci s datovými proudy a další základní funkce.Modules, Nodejs Website Moduly Node.js používají API, které snižuje složitost psaní serverových aplikací.Node.js Essentials, Packt Publishing, 10-Nov-2015

Od verze 22.6.0 podporuje Node.js nativně jak JavaScript tak TypeScript, což umožňuje provádět kód v TypeScriptu bez zvláštního kroku překladu. Podporou TypeScriptu přispěl člen TSC Node.js Marco Ippolito. Kromě toho je k dispozici mnoho jazyků kompilovatelných do JS, což umožňuje psát aplikace pro Node.js také v CoffeeScriptu, Dartu, ClojureScriptu a dalších jazycích.

Node.js se používá především k vytváření síťových programů, jako jsou např. WWW servery.Node.js for PHP Developers, O'Reilly Media, Inc., 2013 Zatímco v PHP většina funkcí pro vstup a výstup blokuje další provádění do dokončení operace, funkce Node.js jsou neblokující – provádějí se souběžně s dalšími příkazy a používají zpětná volání pro signalizaci dokončení nebo selhání.

Node.js je oficiálně podporované na operačních systémech Linux, a Microsoft Windows 8.1 a Server 2012 (a vyšší), s Tier 2 podporou pro SmartOS a AIX a experimentální podporou pro FreeBSD. Pracuje také na OpenBSD a jsou dostupné LTS verze pro IBM i (AS/400). Prostředí lze vytvořit i pro podobné operační systémy, které nejsou oficiálně podporované, jako je NonStop OS a Unix servery.

Příklady Kompletní implementace programu hello world v Node.js: var http = require('http');

http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8000);

console.log('Server running at http://localhost:8000/');

Další ukázka je jednoduchý TCP server, který poslouchá na TCP a UDP portu 7000 a odpovídá na příchozí spojení: var net = require('net');

net.createServer(function (stream) { stream.write('hello\r\n');

stream.on('end', function () { stream.end('goodbye\r\n'); });

stream.pipe(stream); }).listen(7000);

Komunita Node.js má velmi aktivní vývojářskou komunitu, která se soustřeďuje hlavně kolem dvou mailing listů nodejs a nodejs-dev a také na IRC kanálu #node.js na freenode.

Kromě toho se Node.js vývojáři setkávají také na konferencích. První mezinárodní konferencí zaměřenou výhradně na tuto backendovou technologii byla Node.TLV, která se uskutečnila v roce 2020 v Izraeli a 800 účastníkům nabídla celkem 22 odborných přednášek.

Odkazy Reference

Související články JavaScript npm – Node Package Manager Yarn

Externí odkazy

Source Repository Nodejs mailing list – mailing list Nodejs-dev mailing list – mailing list chyb The Node.js Package Manager – seznam dostupných modulů / knihoven How To Node tutorial web site – tutoriály v angličtině

Kategorie:Javascriptové knihovny Kategorie:Software pod licencí MIT Kategorie:Svobodný software naprogramovaný v C++ Kategorie:Svobodný software naprogramovaný v JavaScriptu