Lekce 1 - Úvod do Node.js
Vítejte u první lekce online kurzu o tvorbě webových aplikací v javascriptovém běhovém prostředí 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.
Ú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 Chrome V8 JavaScript enginu, 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í můžete 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 např. 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ů naráz. 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 ještě 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.
Znalosti
Jelikož budeme tvořit webovou aplikaci, měli by jste mít představu o tom, jak takové aplikace fungují a rozumět HTTP protokolu. Dále jste určitě již postřehli, že jako programovací jazyk budeme používat JavaScript. A tím je myšlen převážně čistý JavaScript plus nějaké ty Node.js knihovny, takže např. jQuery určitě nevyužijeme. Navíc, jelikož budeme mít aktuální verzi Node.js na našem serveru, můžeme s klidným svědomím používat i nejnovější vychytávky z ES6 nebo dalších verzí JavaScriptu.
Nástroje
Kromě nainstalovaného Node.js bych doporučil používat nějaké rozumné IDE. To vám obecně při psaní v JS usnadní práci. Já osobně používám WebStorm, ale mám dobré zkušenosti např. i se známými NetBeans.
Instalace
Nyní když máme vše potřebné, pojďme si společně Node.js nainstalovat. Je to velice jednoduché. Přejdeme na oficiální stránky Node.js, případně do sekce download (viz. obrázek), a 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 🙂

Zatím co instalujete, pojďme si udělat menší úvod do architektury této technologie.
Architektura
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í, obzvláště 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 i vy ho nyní již máte 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ůžete 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. Npm se chlubí tím, že je jedním z největších balíčkových správců vůbec a aktuálně obsahuje něco okolo 650 000 balíčků. Najdete zde 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 najdete v Node.js API. Jelikož je toto kurz Node.js, budu se snažit primárně využívat tyto vestavěné moduly, než abych instaloval nějaké externí.
http modul
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. Nejlepší bude ukázat si jednoduchý příklad.
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ý projekt 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}/`); });
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 jste asi vyčetli, že jim odešleme právě text "Hello World". Nakonec náš server nastartujeme na příslušné adrese a portu, přičemž po tomto nastartování následuje callback s vypsáním informativní zprávy, abychom poznali, že server již běží.
Spuštění
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. Pokud voláte příkaz z
příkazového řádku, musíte se nacházet ve stejné složce jako je
index.js
nebo zadat úplnou cestu k němu:
node index.js Server running at http://127.0.0.1:3000/
Nyní již náš server běží. Když si otevřeme webový prohlížeč a přejdeme na jeho adresu, čímž mu vyšleme požadavek, získáme danou odpověď:
To je z dnešního úvodního tutoriálu vše.
Příště, v 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.