- Node.js funcționează cu un model orientat pentru evenimente și E/S nu blocante ideal pentru concurrencia.
- Arhitectură modulară: server, router și handler facilitan escalar și menține.
- Accelerați rapid crearea de aplicații web cu rute, perspective și middleware.
- Trabaja cu npm și modules nativos pentru acoperirea fișierelor, red, rutas și sistema.
Si es tu prima lua de contact cu Node.js, aquí tienes o guide pensada para empezar con buen pie: iremos de lo más básico a un flux de lucru real, cu exemples prácticos și explicaciones claras. Te însoțește de la miticul Hola Mundo până să ridice o aplicație web cu Express, trecând prin modules del sistema, npm și abordarea asíncrono care face special în ecosistema de Node.
În plus, te poți orienta cu cerințe anterioare, configurare în Visual Studio Code și primii proiecte, verás cum se organizează un server HTTP, înrută petiții, manejar controladores, lucrează cu datele POST fără a bloca hilo și a înțelege filosofia bazată pe evenimente. Todo con un lenguaje cercano, sin rodeos, y con el toque necesario para que nu te pierdas.
Cerințe anterioare și ce așteptați de Node.js
Necesitarás unos cunoștințe de bază de JavaScript (tipos, variables, funciones, objects) y ganas de probar cosas con la consola. Node.js este un mediu de execuție de JavaScript în afara browserului, bazat pe V8, cu o librerie standard puternică și un model de execuție dirigido por evenimente și nu blocante. Esto le permite să gestioneze multe conexiuni concurente și să creeze un hilo pentru fiecare petiție.
Cu Nod poți construi servere web, API-uri REST, instrumente de linie de comenzi, aplicații în timp real (chat, notificări), integraciones con bases de date y hasta proyectos IoT. Su fortaleza este în el manejo de E/S concurrente, lo que lo hace ideal para tráfico alto y experiencias interactivas.
Descărcare și instalare
Descărcați Node.js de pe web oficial en nodejs.org e instalat pentru sistemul de operare. În Windows, macOS sau Linux vor avea instalatori și pachete adecvate. După instalație, confirmați în terminal cu: node -v y npm -v. npm este el gestor de pachete de Node și veți putea instala librerías de terți de forma sencilla.
Tu primer contact: Hola Mundo cu VS Code
Dacă folosești codul Visual Studio, puteți deschide folderul proiectului și lansați terminalul integrat cu confort total. Crea o carpeta de lucru și intră în ea: mkdir HelloNode && cd HelloNode.
Acum abre esa carpeta en VS Code con cod .. Creați un fișier numit app.js e introduce algo sencillo para arrancar: un mesaj de consolă.
var msg = 'Hello World';
console.log(msg);
Para executarlo, abre la terminal integrata en VS Code (Ver > Terminal, o atajo Ctrl+`), și lanza node app.js. Verás el clasic output „Hello World” en la consola; sí, sencillo, pero confirm că tot va bine.
De cero a server: un server HTTP minim
Nodul trae un modul nativo numit 'http' cu el că poți crea un server în câteva linii. El corazón este http.createServer, care primește o funcție de apel invers care se execută fiecare dată când ajunge o cerere.
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('Hola Mundo');
response.end();
}).listen(8888);
Aranjează-l cu node server.js și vizitează http://localhost:8888/. La magia de Node este în modelul orientat către evenimente: pasa una función y el runtime la “llama de vuelta” (callback) când se întâmplă el eveniment (una cerere entrante).
Entendiendo callbacks, asincronía și fluxul de executare
În JavaScript, funcțiile sunt cetățenii de la început: se pot trece ca argumente, devolver și stocarea în variabile. Acest model a încadrat cu bucle de evenimente de Node: tu codul de înregistrare a funcțiilor care se execută atunci când se întâmplă evenimente (de exemplu, sosește o cerere HTTP).
Este esențial să înțelegem diferența dintre operațiuni blocante și nu blocante. Dacă introduces algo que ocupa la CPU în timpul secundelor (de exemplu, un bucle de așteptare), el procesul entero se detiene și toate petițiile sufren. En Node, trabaja siempre que puedas con E/S asíncrona y callbacks o promesas pentru a evita blocarea el hilo.
Design modular: server, router și manejadores
Separarea responsabilităților vă ajută să escaladați proiectul: un modul pentru serverul HTTP, un alt modul pentru înrutator și altele pentru controlorii (request handlers). Puedes exponer funcții con exports y requerir modules locales con require('./miModulo').
O structură tipică ar putea fi: index.js ca punct de intrare, server.js cu serverul HTTP, router.js para decide a qué función mandar cada ruta y requestHandlers.js con la logica de cada endpoint. Esta organizație menține codul lizibil și ușor de probat.
Extrayendo la ruta y enrutando
Cererea obiectului are adresa URL solicitatăModulul nativ url permite extragerea lui caii de acces y, si hace falta, la query. Cu asta, el router poate decide ce driver executar.
var url = require('url');
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
// route(pathname) ...
}
Routerul îl primește hartă de rute funcționale (un objeto donde cada clave es una ruta, y el valor, el handler), împreună cu el pathname, și comprueba și hay una funcție asociată. Si exista, la executa; si nu, devuelve un 404.
Haciendo que el handler responda (el model corect)
O încercare obișnuită este să facă că el controlador returne un șir și că el server lo escriba. Pero esto falla cuando el handler necesita hacer algo asíncrono (como leer de disco sau executar un comando). La soluție efectivă es injectarea obiectului răspuns până el handler și care el propio handler escriba la răspuns când la tenga (de exemplu, în interiorul callback-ului unei funcții asíncrona).
// router.js
function route(handle, pathname, response) {
if (typeof handle[pathname] === 'function') {
handle[pathname](response);
} else {
response.writeHead(404, {'Content-Type': 'text/html'});
response.write('404 No Encontrado');
response.end();
}
}
Această abordare permite responde justo cuando la E/S asíncrona concluye, sin bloquear el proceso ni forzar a devolver datos antes de tiempo.
Express: creați o aplicație web în minute
Express este un cadru minimalist pentru Node.js care facilitează gestionarea rutelor, perspectivelor, middleware-urilor și utilităților HTTP. Cu generatorul puteți crea structura unui proiect în secunde, cu foldere pentru rute, perspective și resurse estetice.
- Creați un folder pentru proiectele dvs:
mkdir ExpressProjects && cd ExpressProjects. - Genuri o plantulă:
npx express-generator HelloWorld --view=pugcrea la app cu motor de vistas Pug. - Deschideți în VS Code cu
code .și revizuiți structura: bin (start), public (JS/CSS/imagini), rute (controlori de rute), vizualizari (plantile), app.js (configurare), pachet.json (scripturi și dependențe). - Instalați dependențe cu
npm installpe coperta proiectului. - Porniți aplicația. De exemplu, cu depurare:
npx cross-env DEBUG=HelloWorld:* npm start. - Se deschide http://localhost:3000. Prueba a schimba la vista principal: In
views/index.pug, înlocuiește titlul cuh1 "Hello World!"și reîncărcați.
Express incorpora lo necesar para gestionarea comenzilor GET, POST, PUT și DELETE, utilizați middleware, serviți estáticos, renderizați perspectivele și structurați o aplicație de mai multe pagini cu mai puțin frecare.
npm și modules incorporados de Node
npm este el gestor de pachete de Node și vă permiteți instalarea librerías de terți. De exemplu, pentru adăugare Express: npm install express. Atunci poti require('express') și utilizați-vă codul. Această flexibilitate este cheie pentru a crește cu dvs. proiect.
În plus, nodul este inclus module native pentru sarcini comune: fs (arhive), http/https (servitori), path (rute), os (date ale sistemului), url (parsing de URL) și multe altele. Puedes importarlos con require() fără a instala nimic.
Probando un módulo nativo: información del sistema
Modulul „os” oferă date despre sistemul de operare. Abre la consola y entra en el REPL de Node con node pentru a proba funcții rapid și a crea fișiere.
- scrie
os.platform()pentru a saber la platforma (win32, linux, darwin…). Vei confirma că SO este activ în mod direct. - cu
os.arch()obtindrás la arquitectura (x64, arm64…). Util pentru binare sau build-uri. - Folosi
os.cpus()pentru a vedea nucleele disponibile. Ideal pentru echilibrarea încărcăturii con clústeres o procesos hijos. - Sal del REPL cu
.exitsau apăsând Ctrl+C de două ori. Rapid și fără reziduuri.
Biblioteca de terți util în ziua a zi
Ecosistemul NPM este enorm. Algunas utilitati populare: ascuţit (tratament de imagini și compresión), PDFKit (generare de PDF), validator.js (validarea lanțurilor), imaginemin y UglifyJS (minificare), spritesmith (sprituri), Winston (exploatare forestieră) y commander.js (CLI). Instalează-le cu npm install <paquete> când ai nevoie de ele.
Cum se execută codul Node.js din fișier
Vedeți codul într-un fișier, de exemplu app.jsși executați-l cu node app.js en la terminal. Începeți programul și veți vedea rezultatele în consola, și ridicați un server, în browser.
Del REPL a aplicației reale: flux complet
Probar în el REPL este perfect pentru funcții mici, pero en cuanto tu codul crește, te conviene să treci în fișiere, să organizezi module și să adaugi scripturi de npm. De această formă podrás automatizar tareas con npm run y documentar los comandos de inicio en package.json.
Manejând datele POST fără a bloca
Când un utilizator trimite un formular, el cuerpo de la cerere poate llegar în varios trozos. În server (callback de createServerascultători añade data y end pentru a acumula conținutul și a procesa finalul. Indicați și codificarea, de exemplu UTF-8, pentru a manipula corect.
request.setEncoding('utf8');
var postBody = '';
request.addListener('data', function(chunk) {
postBody += chunk;
});
request.addListener('end', function() {
// route(handle, pathname, response, postBody)
});
Si necesitas extraer camps individuales, folosește modulul „querystring” pentru a analiza corpul când ajunge ca application/x-www-form-urlencoded: querystring.parse(postBody).text, de exemplu.
Operaciones costosas y exec no bloqueante
Pentru a executa comenzile sistemului sin detener el servidor, utiliza child_process.exec și răspunzi la callback. Puteți adăuga opțiuni ca timeout o maxBuffer pentru a controla comandos pesados. El patron este întotdeauna el mismo: nimic de blocat, și răspuns când ai date.
var exec = require('child_process').exec;
function handler(response) {
exec('ls -lah', function(error, stdout, stderr) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write(stdout);
response.end();
});
}
Si cambias el comando por algo más exigente, el resto de rutas seguirá respondiendo con normalidad siempre que no hagas trabajo sincrónico costoso en el hilo principal.
Subidas de ficheros: enfoque y herramientas
Para manejar uploads multiparte (imágenes u otros archivos) lo más práctico es recurrir a un pachet specializat. Module ca formidabil facilitează analiza formularelor multipart/form-data, accesați fișierele temporale și mutați la destinație. Ideea este necorespunzătoare: apeluri inverse/promisiuni y lucrează de forma sigură cu streams.
Deși implementarea completă scapă de la primii pași, ceea ce este important este că integrează încărcarea în fluxul tău: serverul pe care îl primești formularul, router que dirige a la ruta de subida, y manipulant că validează, păstrează și răspunde cu rezultatul (de exemplu, arătând imaginea).
Estructura de vedere și conținut dinámico
Si optas por Express cu Pug u alt motor, el controlador pasa date a la vista și este los renderiza. Pentru un formular simplu cu o zonă de text trimisă de POST și o rută pe care o arătați, basta cu doi handler: unul care servește formularul și alt lucru procesa și devuelve el conținut primit.
Bune practici organizaționale
Evitați arhivele monolitice. Divide en modules, nombra functions with verbs that expressen actions (de exemplu, Iniciar, suferi, a lista), y desacopla con inyección de dependențe cuando tenga sentido (pasând funcții sau hărți de rute pe server și pe router). Mantener las capas ligeras te va permite crecer sin dolores.
Ce poți construi cu Node.js
Acest model este bazat pe evenimente și fără blocare Este foarte bine pentru: servere web, API-uri REST, aplicații în timp real (chat, tablouri de bord), roboți și CLI, integrări cu baze de date, coloane de lucru și control hardware. Facilitatea pentru manejar websockets și streaming se transformă într-o alegere naturală pentru experiențe interactive.
- Servere și site-uri web cu șabloane sau SSR.
- REST API-uri preparate para alto trafic.
- Timp real cu prize pentru chat, notificări sau jocuri.
- instrumente de linie de comandă pentru a automatiza sarcinile.
- Procesos con ficheros și baze de date, cola și conducte.
- IoT și hardware cu librării specifice.
Herramientas de învățare și practică
Există medii interactive care arată codul și ieșirea lado a lado, ideales para entender ejemplos rápidos. Astfel, puteți progresa fără a crea conturi: documentați, copiați exemplele și executați în local cu terminalul dvs. este mai mult decât suficient la principiu.
Cod Visual Studio: productivitate fără a ieși din editor
El terminal integrat, el depurator și las extensiones de VS Code hacen că lucrează cu Node sea muy confortabil. Din „Ver > Terminal” puteți deschide shell-uri, schimbați predeterminat și executați node o npm run sin abandonar el editor. În plus, configurați launch.json te permite depurar paso a paso.
Apuntes de versiune și stabilitate
Muchas guías clásicas se probaron cu versions antiguas de Node, pero los conceptos se mantienen vigentes: callbacks, modules nativos, asincronía, înrutado și separación de responsabilitate. Hoy workás cu versiuni actuale, mai rapide și sigure, și cu un ecosistema npm și mai mult.
Descărcări și resurse suplimentare
Puteți extinde studiul cu documentație, PDF-uri și tutoriale. Revis siempre la web oficial de Node pentru novedades și descărcare, e identificarea surselor didactice pe care le includ exerciții, teste și repetiții pentru afianzar cunoștințe a măsură că avances.
Dacă căutați material complementar, găsiți ghiduri introductive și referințe practice cu exemple, așa cum sunt linkurile de descărcare atunci când este necesar. Păstrează-ți concentrarea în practică: leer está bien; ejecutar, romper cosas y arreglarlas, mejor.
Exemplu complet: mini aplicație cu router și handler
Îmbinarea pieselorImaginează-ți un proiect cu index.js care îl aranjează pe servitor, server.js cu HTTP și parsarea POST, router.js que decide ce funcție executar y requestHandlers.js cu dos rute: una care afișează un formular și altă care arată el text enviado.
// index.js
var server = require('./server');
var router = require('./router');
var handlers = require('./requestHandlers');
var handle = {};
handle['/'] = handlers.iniciar;
handle['/iniciar'] = handlers.iniciar;
handle['/subir'] = handlers.subir;
server.iniciar(router.route, handle);
// server.js
var http = require('http');
var url = require('url');
function iniciar(route, handle) {
function onRequest(request, response) {
var postData = '';
var pathname = url.parse(request.url).pathname;
request.setEncoding('utf8');
request.addListener('data', function(chunk) { postData += chunk; });
request.addListener('end', function() {
route(handle, pathname, response, postData);
});
}
http.createServer(onRequest).listen(8888);
}
exports.iniciar = iniciar;
// router.js
function route(handle, pathname, response, postData) {
if (typeof handle[pathname] === 'function') {
handle[pathname](response, postData);
} else {
response.writeHead(404, {'Content-Type': 'text/html'});
response.end('404 No Encontrado');
}
}
exports.route = route;
// requestHandlers.js
var querystring = require('querystring');
function iniciar(response) {
var body = '<html>'+
'<head><meta charset=\'UTF-8\' /></head>'+
'<body>'+
'<form action=\'/subir\' method=\'post\'>'+
'<textarea name=\'text\' rows=\'10\' cols=\'40\'></textarea>'+
'<input type=\'submit\' value=\'Enviar\' />'+
'</form>'+
'</body></html>';
response.writeHead(200, {'Content-Type': 'text/html'});
response.end(body);
}
function subir(response, postData) {
var text = querystring.parse(postData).text || '';
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('Tu enviaste: ' + text);
}
exports.iniciar = iniciar;
exports.subir = subir;
Con este esqueleto minim ya ares un server functional si nu blocante, cu rute și drivere separate, pregătite pentru a crește către perspective, încărcări sau integrare cu baze de date.
La clave de Node se gândește în „acțiuni”: trece funcții, injectare dependențe când convenga și menține pequeños los blocs de responsabilidad. Astfel, aplicația va fi mai ușor de menținere și de adaptare conformă cu complexitatea.
Vezi o bază solidă: pentru a instala Node și a executa scriptul de inițiere, trecând prin VS Code, un server HTTP nativ, înrutat propriu, Express, npm, modules nativos, REPL, asincronía sin blocos și manejo de formulare POST. Cu practici și mici iterații, puteți construi proiecte de fiecare dată mai complete fără a pierde claritatea codului.