Node.js to środowisko uruchomieniowe, które wykonuje JavaScript poza przeglądarką: na serwerze, w terminalu albo jako narzędzie wiersza poleceń. To nie jest język programowania (językiem jest JavaScript) ani framework (Express to framework, który działa na Node.js). Łączy silnik V8 od Google, który wykonuje JavaScript, z event loop i wbudowanymi API do plików, sieci i procesów, których przeglądarki nie mają.
Wypisało zawartość pliku, numer wersji głównej (v24) i undefined dla window, bo Node.js nie ma strony, która by ci go dała. fs i process istnieją tylko w Node.js; uruchom te same linie w karcie przeglądarki, a już pierwsza rzuci błąd.
Node.js to framework czy język?
Ani to, ani to. Językiem jest JavaScript. Node.js to program, który go wykonuje, tak jak JVM wykonuje Javę, a CPython Pythona. Frameworki są warstwę wyżej: Express, Fastify i NestJS to biblioteki, które instalujesz w projekcie Node.js. Strona Node.js a JavaScript porównuje je dokładnie.
Pod spodem Node.js składa się z czterech części:
- V8, silnik JavaScript z Chrome. Zamienia twój kod na kod maszynowy i go wykonuje.
- libuv, biblioteka w C, która dostarcza event loop i wykonuje w tle wolną pracę (dysk, sieć, timery), a potem oddaje wynik twoim callbackom.
- Własne API Node:
fsdo plików,httpdo serwerów,path,process,crypto,eventsi więcej, dostępne przezrequirealboimportbez instalacji. - npm, menedżer pakietów dołączony do Node.js, który daje dostęp do największego rejestru pakietów spośród wszystkich języków.
Jak uruchomić plik Node.js
Zainstaluj Node.js z jego strony (wybierz wersję LTS), potem sprawdź go w terminalu i uruchom plik:
node --version # prints v24.x.x or similar
node app.js # runs app.js and exits when it has nothing left to do
node # with no file: an interactive prompt (the REPL)
Program kończy się sam, gdy nic już nie czeka: żaden timer, żaden otwarty serwer, żaden niedokończony odczyt pliku. Dlatego skrypt się kończy, a serwer WWW działa dalej.
Nieblokujące I/O, główna idea
Node.js nie czeka na wolną pracę. Rozpoczyna odczyt pliku albo żądanie sieciowe, dalej wykonuje kolejne linie i wywołuje twoją funkcję, gdy wynik jest gotowy.
Dwie linie console.log po readFile wykonały się pierwsze, a zawartość pliku przyszła na końcu. Tak jeden proces Node.js obsługuje tysiące połączeń: gdy jedno żądanie czeka na bazę danych, event loop obsługuje pozostałe.
Node.js a przeglądarka
| Przeglądarka | Node.js | |
|---|---|---|
| Działa | Na stronie WWW | W terminalu albo na serwerze |
| Ma | window, document, DOM, localStorage | fs, process, http, Buffer, require |
| Obiekt globalny | window (i globalThis) | global (i globalThis) |
| Pliki na dysku | Brak dostępu | Pełny dostęp, z uprawnieniami twojego użytkownika |
setTimeout, console, fetch, URL | Tak | Tak |
Do czego używa się Node.js
- Serwery WWW i API: backendy REST i GraphQL, często z Express.
- Aplikacje czasu rzeczywistego: czaty, dashboardy na żywo i gry multiplayer przez WebSockety, gdzie wiele połączeń jest otwartych naraz.
- Narzędzia wiersza poleceń: sam npm, Vite, ESLint, Prettier i kompilator TypeScript działają na Node.js.
- Skrypty i automatyzacja: zmiana nazw plików, wywoływanie API, migracja danych.
Najczęstsze zastosowanie to serwer HTTP, a na pierwszy wystarczy wbudowany moduł http:
Serwer odpowiedział na GET /hello ścieżką, którą dostał. Zmień ścieżkę w pasku żądania na /anything i wyślij: odpowiedź się zmieni, bo ten serwer obsługuje każdy URL jedną funkcją.
Kiedy wybrać Node.js
Wybierz Node.js, gdy praca to głównie czekanie na I/O (żądania, bazy danych, pliki) i chcesz jednego języka na frontendzie i backendzie. Gorzej sprawdza się przy długich obliczeniach obciążających procesor, takich jak kodowanie wideo albo duże obliczenia numeryczne, bo długie obliczenie blokuje jedyny wątek JavaScript, a każde inne żądanie na nie czeka.
Najczęściej zadawane pytania
Node.js to frontend czy backend?
Głównie backend. Node.js działa na serwerze albo na twoim komputerze, a nie w przeglądarce odwiedzającego. Frontendowcy i tak używają go codziennie, bo narzędzia takie jak npm, Vite i ESLint to programy w Node.js.
Kto stworzył Node.js i kiedy?
Ryan Dahl wydał Node.js w 2009 roku. Dziś utrzymuje go OpenJS Foundation, z nową wersją główną co sześć miesięcy, a wersje parzyste dostają długoterminowe wsparcie (LTS).
Czy przed Node.js muszę znać JavaScript?
Tak, przynajmniej podstawy: zmienne, funkcje, obiekty, tablice i callbacki albo promise. Node.js dodaje API, a nie nową składnię, więc wszystko, czego nauczysz się o języku, działa wprost.
Czy Node.js jest jednowątkowy?
Twój JavaScript działa w jednym wątku. Node.js w tle używa małej puli wątków do pracy z systemem plików, DNS i części crypto, więc wolne I/O nie blokuje twojego kodu, gdy czeka.