Lekce 1 - Úvod do Node.js
Vítejte u první lekce online kurzu o architektuře a tvorbě webových aplikací v běhovém prostředí JavaScript Node.js. V dnešním tutoriálu si prostředí představíme a nainstalujeme. Nakonec si zkusíme napsat i svou první aplikaci.
Minimální požadavky
Pro úspěšné absolvování kurzu je potřebná znalost JavaScriptu v rozsahu našich kurzů:
Vhodná je též základní znalost HTML. Pokud některé ze znalostí nemáte, absolvujte prvně daný kurz.
Úvod do Node.js

Node.js je prostředí umožňující spouštět JavaScript kód mimo webový prohlížeč. Je postaveno na JavaScript enginu Chrome V8, takže základ tohoto JS prostředí je stejný jako ve webovém prohlížeči Google Chrome. Důležité je říci, že byť v tomto prostředí lze psát ledacos, jeho návrh a primární účel je tvorba serverové části webových aplikací. Toto má společné např. s jazykem PHP, který má stejné zaměření. JavaScript se tedy díky tomuto prostředí dá používat i na serveru a ne jen na druhém konci, u klienta. Avšak na rozdíl od zmíněného PHP je v Node.js kladen důraz na vysokou škálovatelnost, tzn. schopnost obsloužit mnoho připojených klientů současně. Pro tuto vlastnost a vysokou výkonnost je dnes Node.js velmi oblíbený pro tvorbu tzv. API serverů pro klientské single page aplikace rovněž v JavaScriptu. Proč je Node.js tak výkonný si vysvětlíme u popisu jeho architektury.
Potřebné nástroje pro vývoj v Node.js
Na začátek, než se vůbec pustíme do instalace, nás určitě bude zajímat, co vše potřebujeme pro práci v Node.js.
Kromě nainstalovaného Node.js budeme potřebovat vývojové prostředí (IDE). Možností je více, od WebStorm, přes NetBeans až po Visual Studio Code. Všechny jmenované IDE jsou dostatečně vybavené pro práci s Node.js, záleží spíše na osobním zvyku a preferencích.
Instalace Node.js
Nyní když máme připravené IDE, pojďme si společně Node.js nainstalovat. Je to velice jednoduché. Přejdeme na oficiální stránky Node.js, případně přímo do sekce download:

Stáhneme si instalátor pro náš operační systém. Ten následně spustíme a podle instrukcí nainstalujeme. Určitě už jste takových instalací dělali nespočet 🙂
Architektura Node.js
Jádro celého Node.js tvoří tzv. smyčka událostí (event loop). Do ní vstupují všechny uživatelské požadavky jako události, které jsou poté přiděleny jednotlivým nezávislým vláknům. Zde určitě platí, že jeden obrázek vydá za tisíc slov:

Další operace, jako manipulace se zdroji operačního systému, což jsou
např. čtení souboru nebo práce s databází, jsou poté řešeny také
pomocí událostí (tzv. neblokující I/O). Jejich volání je logicky opět
zařazeno do smyčky událostí. Ve výsledku to znamená, že vlastně úplně
vše řídí tato smyčka pomocí různých událostí. Jednoduché, avšak
velice efektivní řešení, je obzvláště vhodné pro webové aplikace s
velkým množstvím uživatelských požadavků. JavaScript pak do toho všeho
velice hezky zapadá, jelikož tyto události jsou nativně reprezentovány
pomocí JS callbacků
Balíčkový systém npm
Společně s Node.js jde ruku v ruce i balíčkovací ekosystém npm. Je přímo součástí standardní instalace Node.js, takže ho již máme k dispozici. Ovládá se pomocí příkazové řádky nebo v rámci IDE.
Není žádnou novinkou, že většina programovacích jazyků má svého správce knihoven a ve světě JavaScriptu je to právě npm. Pomocí něho můžeme obecně instalovat i spravovat závislosti ve svých projektech, ale také sdílet a distribuovat svůj JS kód. Nyní se nebavíme jen o knihovnách pro Node.js. Systém npm se chlubí tím, že je se stovkami tisíc dostupných balíčků jedním z největších balíčkových správců vůbec. Obsahuje balíčky nástrojů jako Grunt, Bower, či Gulp nebo také populárních frameworků jako jQuery, React, či Angular.
My ho určitě využijeme i v rámci našeho projektu, až si budeme chtít nainstalovat potřebné knihovny, např. pro práci s databází. Důležité je zmínit, že Node.js má i několik vestavěných modulů, primárně zaměřených na vývoj webových aplikací. Jejich seznam je k dispozici v Node.js API. V rámci kurzu budeme primárně využívat tyto vestavěné moduly, než abychom instalovali nějaké externí.
Modul http
Node.js neběží v rámci žádného webového serveru, nýbrž si v rámci
skriptu webový server spouštíme sami přímo z kódu. K tomuto účelu
slouží vestavěný modul http
, který nám následně poskytne
plnou kontrolu nad HTTP komunikací tohoto serveru. Je důležité si uvědomit,
že tento modul neposkytuje žádnou automatizaci a veškeré náležitosti HTTP
protokolu, jako např. hlavičky, si tedy musíme pohlídat sami.
První aplikace
Pojďme si nyní zkusit napsat jednoduchou webovou aplikaci v Node.js.
Protože s ní budeme potřebovat nějak komunikovat, použijeme právě
http
modul. A co je vhodnější než osvědčené "Hello World"?
🙂 Vytvoříme si tedy nový adresář s názvem pozdrav/
a v
něm soubor index.js
s následujícím obsahem:
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((request, response) => { response.statusCode = 200; response.setHeader('Content-Type', 'text/plain'); response.end('Hello World!'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
Kód si vysvětlíme. Nejdříve si načteme http
modul. Pomocí
něj si vytvoříme server s callbackem, který bude volán pro zpracování
jednotlivých klientských požadavků v rámci již zmíněné smyčky
událostí. V tomto callbacku poté na základě požadavků odesíláme
klientům příslušnou odpověď (response
) s náležitostmi HTTP
protokolu. Z kódu je zřejmé, že jim odešleme právě text
Hello World
. Nakonec náš server spustíme na příslušné adrese
a portu. Po jeho spuštění následuje callback s vypsáním informativní
zprávy, abychom poznali, že server již běží.
Spuštění aplikace
Nyní musíme náš skript spustit v prostředí Node.js. To uděláme buď v rámci IDE nebo pomocí jednoduchého příkazu z příkazového řádku, kde uvidíme i výstup.
Příkazový řádek
Prvně potřebujeme spustit příkazový řádek nebo Power Shell a
přejít do složky s projektem. To nejjednodušeji uděláme
kliknutím pravým tlačítkem myši na naši složku
pozdrav/
v průzkumníku Windows za
držení klávesy Shift. Výsledkem bude zobrazení
kontextového menu, kde bude díky držení Shift navíc volba
Otevřít zde okno Power Shell (Win 10) nebo Otevřít v aplikaci
Terminál (Win 11). Po kliknutí na volbu se spustí okno příkazového
řádku:
Windows PowerShell PS C:\Users\karel\Dropbox\Node\pozdrav>
Obsah konzole se může lišit v závislosti na operačním
systému. Důležité je, aby cesta končila na pozdrav/
a byli
jsme tedy ve složce pro naší aplikaci.
Pokud voláme Node.js příkaz z příkazového řádku, musíme se nacházet ve stejném adresáři, v němž je soubor, případně k němu zadat úplnou cestu. My tedy můžeme nyní napsat příkaz:
node index.js
A potvrdit klávesou Enter. V konzoli vidíme, že server běží:
Příkazový řádek
Server running at http://127.0.0.1:3000/
Nyní si otevřeme webový prohlížeč a přejdeme na adresu
127.0.0.1:3000
. Tím serveru vyšleme požadavek a získáme od
něj odpověď:
To je z dnešního úvodního tutoriálu vše.
V další lekci, REST API, SOAP, GraphQL a JSON, se seznámíme s různými typy aplikačních rozhraní, abychom mohli tvořit zajímavé webové aplikace.