Przejdź do treści
Node.js i Express: Backend od ZeraModuł 1 · lekcja 1 z 4
Za darmo1 min czytania

Moduł 1 · Wprowadzenie do Node.js

Jak działa Node.js — V8, event loop i non-blocking I/O

Jak działa Node.js pod maską

Node.js to środowisko uruchomieniowe JavaScript po stronie serwera, zbudowane na silniku V8 — tym samym, który napędza przeglądarkę Google Chrome. Dzięki temu kod JavaScript, który znasz z frontendu, działa teraz bezpośrednio na serwerze, bez przeglądarki.

Silnik V8

V8 to kompilator JIT (Just-In-Time) napisany w C++. Zamiast interpretować kod JS linia po linii, V8 kompiluje go do natywnego kodu maszynowego tuż przed wykonaniem. To sprawia, że Node.js jest zaskakująco szybki jak na język interpretowany.

Single-threaded, ale wydajny

Node.js działa w jednym wątku — w przeciwieństwie do np. Apache, który tworzy nowy wątek dla każdego żądania HTTP. Brzmi jak wada, ale to celowy projekt architektoniczny.

Kluczem jest Event Loop — pętla zdarzeń, która nieustannie sprawdza, czy są nowe zadania do wykonania.

Event Loop krok po kroku

Tekst
┌───────────────────────────┐ ┌─>│ timers │ ← setTimeout, setInterval │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ │ pending callbacks │ ← błędy I/O z poprzedniej iteracji │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ │ poll (I/O) │ ← pobieranie nowych zdarzeń I/O │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ │ check │ ← setImmediate └──┴───────────────────────────┘

Non-blocking I/O

Kiedy Node.js wykonuje operację I/O (odczyt pliku, zapytanie do bazy, request HTTP), nie blokuje głównego wątku. Zamiast czekać na wynik, rejestruje callback i przechodzi do kolejnego zadania.

JavaScript
// Blocking (zły wzorzec w Node.js) const data = fs.readFileSync('plik.txt'); // wątek czeka! console.log(data); // Non-blocking (prawidłowy wzorzec) fs.readFile('plik.txt', (err, data) => { console.log(data); // wykonuje się gdy dane są gotowe }); console.log('To wykona się PRZED odczytem pliku!');

Kiedy Node.js świeci, a kiedy nie?

Node.js jest idealny dla:

  • API REST i GraphQL
  • Aplikacji real-time (chat, notyfikacje)
  • Microservices
  • Proxy i API Gateway

Unikaj Node.js przy:

  • Obliczeniach CPU-intensive (szyfrowanie, przetwarzanie wideo)
  • Aplikacjach wymagających równoległości na poziomie wątków

Rozumiejąc event loop, wiesz już dlaczego Node.js może obsłużyć tysiące równoczesnych połączeń przy minimalnym zużyciu pamięci — to fundament wszystkiego, co będziemy budować w tym kursie.

Następna: Instalacja środowiska i pierwsze "Hello World"

27 lekcji w abonamencie.

Program kursu

Karta wymagana · anulujesz jednym kliknięciem · Mam już konto