Node.js este un runtime JavaScript construit pe motorul V8 al Google Chrome. Permite executarea JavaScript in afara browserului, pe server. Caracteristica definitorie este modelul event-driven, non-blocking I/O care il face ideal pentru aplicatii cu multe conexiuni simultane.
Node.js - fundamente
Node.js este un runtime JavaScript construit pe motorul V8 al Google Chrome. Permite executarea JavaScript in afara browserului, pe server. Caracteristica...
Ce este Node.js?
Instalare si configurare
Recomandam instalarea prin nvm (Node Version Manager) pentru a putea gestiona mai multe versiuni:
# Instalare nvm (Linux/macOS)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# Instalare Node.js LTS
nvm install --lts
nvm use --lts
# Verificare instalare
node --version # v22.x.x
npm --version # 10.x.x
Initializare proiect
# Creare proiect nou
mkdir api-project && cd api-project
npm init -y
# Structura package.json
{
"name": "api-project",
"version": "1.0.0",
"type": "module", // ES Modules
"scripts": {
"dev": "node --watch src/index.js",
"start": "node src/index.js"
}
}
In 2026, folosim ES Modules (import/export) ca standard. Adaugati "type": "module" in package.json. CommonJS (require) este legacy dar inca prezent in multe pachete.
Event Loop si modelul asincron
Node.js ruleaza pe un singur thread dar gestioneaza mii de conexiuni simultane prin Event Loop. Operatiile I/O (citire fisiere, cereri retea, queries baze de date) sunt delegate kernel-ului sau thread pool-ului, iar callback-urile sunt executate cand operatia se termina.
Fazele Event Loop
- Timers - executa callback-uri setTimeout/setInterval
- Pending Callbacks - callback-uri I/O amanate
- Poll - asteapta si proceseaza noi evenimente I/O
- Check - executa callback-uri setImmediate
- Close Callbacks - curatare resurse
Async/Await si Promises
// Promise chain - mai greu de citit
fetchUser(1)
.then(user => fetchOrders(user.id))
.then(orders => console.log(orders))
.catch(err => console.error(err));
// Async/await - cod clar si lizibil
async function getUserOrders(userId) {
try {
const user = await fetchUser(userId);
const orders = await fetchOrders(user.id);
return orders;
} catch (error) {
console.error('Eroare:', error.message);
throw error;
}
}
// Executie paralela cu Promise.all
async function getDashboardData(userId) {
const [user, orders, notifications] = await Promise.all([
fetchUser(userId),
fetchOrders(userId),
fetchNotifications(userId)
]);
return { user, orders, notifications };
}
Operatiile sincrone intensive (calcule complexe, procesare fisiere mari) blocheaza Event Loop-ul si afecteaza toate cererile. Folositi Worker Threads pentru calcule CPU-intensive sau delegati la servicii separate.
Module Node.js esentiale
import fs from 'fs/promises'; // Sistem de fisiere (async)
import path from 'path'; // Manipulare cai
import { createServer } from 'http'; // Server HTTP nativ
import crypto from 'crypto'; // Criptografie
import { URL } from 'url'; // Parsare URL-uri
import EventEmitter from 'events'; // Pattern observer
// Citire fisier async
const data = await fs.readFile('./config.json', 'utf-8');
const config = JSON.parse(data);
// Server HTTP minimal (fara Express)
const server = createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Hello API!' }));
});
server.listen(3000, () => console.log('Server pe portul 3000'));npm si gestionarea dependentelor
# Instalare pachete
npm install express # Dependenta de productie
npm install -D nodemon # Dependenta de dezvoltare
# Pachete utile pentru backend
npm install express cors helmet dotenv
npm install jsonwebtoken bcryptjs
npm install prisma @prisma/client
npm install zod # Validare schema
npm install winston # Logging
Structura recomandata proiect Node.js
src/ - codul sursa principal
src/routes/ - definitii rute API
src/controllers/ - logica de business pentru fiecare ruta
src/middleware/ - middleware-uri (auth, validare, erori)
src/models/ - modele si scheme baze de date
src/services/ - logica de business reutilizabila
src/utils/ - functii helper
tests/ - teste unitare si de integrare
Continuați cu restul cursului
Acesta este capitolul 3 din cele 20 ale cursului, cu 6 lecții din 82. Cumpărați cursul și parcurgeți tot conținutul în cont, cu progres salvat, test final și certificat.
Cumpărați cursul la 110 €