JavaScript byl vymyšlenej pro to, aby běžel v prohlížeči. Pak přišel autor Node.js a řekl, že teď už poběží i v příkazový řádce a tím pádem na serveru.
Node.js vznikl tak, že vykostili JS jádro z Chromia1 a přepsali do C++ API, co jsou standardně v prohlížeči.
Instalace
Máš několik způsobů, jak si node nainstalovat.
Buď si nainstaluješ NVM (node version manager) a můžeš si jednoduše mezi verzema přepínat, jak potřebuješ.
A nebo si nainstaluješ jednu konkrétní binárku a sviští to.
Sice bych to neměl úplně říkat, ale mezi verzema až takovej rozdíl není. Nainstaluj si vždycky tu nejnovětší (aktuálně v22 nebo v24) a budeš v pohodě.
Spuštění skriptu
Vytvoř si soubor main.js
// main.js
console.log("Zdarec 👋 Tady si můžeš programovat, co jen budeš chtít.");A pak ho můžeš spustit přes node main.js

A to je úplně všechno 😁 Můžeš začít programovat.
NPM - Instalace knihoven
Některý knihovny si “nainstaluješ” tak, že si do stránky přidáš třeba tohle
<script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>A to je úplně na 💩.
- Spoléháš se, že někdo bude pořád ochotnej ten file hostovat
- Spoléháš se, že ho nikdo nehackne a nepodstrčí tam malicious kód
- Můžou Tvoje uživatele sledovat – s každým načtením tvojí stránky se pošle request někomu cizímu.
Řešení je NPM, je to takový “centrální registr” všech knihoven, co v JS světě existujou.
Nedělej si na NPM účet, nepotřebuješ ho.
Balíčky se instalují do projektu. Projekt si vytvoříš úplně jednoduše.
mkdir muj-projektcd muj-projektnpm init- Odklikej/vyplň co chceš.
Tohle ti vytvoří package.json, to je středobod všech JS projektů. Máš tady všechny informace o projektu – jaký obsahuje knihovny, jak se jmenuje, jakou má verzi a jak se spouští.
package.json může vypadat třeba takhle
{
"name": "soundboard-client",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview",
"docker:build": "docker build -t soundboard-client .",
"docker:run": "docker run -d -p 3001:80 soundboard-client"
},
"dependencies": {
"@picocss/pico": "^2.1.1",
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"devDependencies": {
"@eslint/js": "^9.25.0",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@vitejs/plugin-react": "^4.4.1",
"eslint": "^9.25.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.19",
"globals": "^16.0.0",
"sass-embedded": "^1.89.2",
"typescript": "~5.8.3",
"typescript-eslint": "^8.30.1",
"vite": "^6.3.5"
}
}Vytvoří se ti ještě druhej soubor – package-lock.json a ten je taky důležitej. Generuje se automaticky, když přidáš/odebereš nějakou knihovnu. Jsou v něm informace o tom, jaký přesný verze a závislosti knihoven se nainstalovaly.
Knihovny si instaluješ pomocí příkazu npm install. A u každý knihovny na NPM máš rovnou příkaz, co si můžeš zkopírovat.

Tenhle příkaz Ti vytvoří složku node_modules, kde se nachází všechny knihovny, který máš nainstalovaný.
Bacha, nikdy necommituj
node_modulesdo GITu!V kapitole Verzování - GIT je vysvětleno, co je to
.gitignore.
A pak už si je můžeš normálně importovat.
import { parse } from `date-fns`;A jestli Ti můžu dát tip… Instaluj co nejmíň knihoven to jde. Spoustu věcí jde udělat přímo v čistým JavaScriptu. Čím míň knihoven, tím menší projekty a tím míň zranitelností.
Alternativy
Node.js je de-facto standard, ale má svoje chyby a nemá některý věci vyřešený úplně dobře2.
Můžeš se podívat třeba na Deno a Bun.
Ale doporučuju Ti se nejdřív pořádně naučit s JavaScriptem a Nodem, než začneš zkoumat alternativní runtimy.
Stejně tak i npm má svoje alternativy (Yarn nebo pnpm), ale zase – začni je používat, až když Ti npm přestane stačit.