- Node.js funciona con un modelo orientado a eventos y E/S no bloqueante ideal para concurrencia.
- Arquitectura modulär: servidor, router och hanterare underlättar eskalering och mantener.
- Express snabbare skapande av appar på webben med rutt, vyer och mellanprogram.
- Trabaja con npm y módulos nativos para cubrir archivos, red, rutas y sistema.
Si es tu primera toma de contacto con Node.js, aquí tienes una guía pensada para empezar con buen pie: iremos de lo más básico a un flujo de trabajo real, con ejemplos prácticos y explicaciones claras. Te acompañaré desde el mítico Hola Mundo hasta levantar una app web con Express, pasando por módulos del sistema, npm y el enfoque asíncrono que hace tan especial al ecosistema de Node.
Orienteringsexperter med nödvändiga föregående, konfiguration och Visual Studio Code och primeros proyectos, på ett sätt som organiserar en HTTP-tjänst, enrutar peticiones, manejar controladores, trabajar con datos POST sin bloquear el hilo y entender la filosofía event-driven. Todo con un lenguaje cercano, sin rodeos, y con el toque necesario para que no te pierdas.
Requisitos previos y qué esperar de Node.js
Nödvändiga grundläggande JavaScript (Tipos, variabler, funciones, objetos) y ganas de probar cosas con la consola. Node.js är en entorno de ejecución de JavaScript fuera del navegador, basado en V8, con una librería estándar potente y un modelo de ejecución dirigido por eventos y no bloqueante. Esto le permite gestionar muchas conexiones concurrentes sin crear un hilo por cada petición.
Med nod kan man bygga servidores web, APIs REST, herramientas de línea de comandos, appar och tiempo real (chatt, notificaciones), integraciones con bases de datas y hasta proyectos IoT. Su fortaleza está en el manejo de E/S concurrente, lo que lo hace ideal para tráfico alto y experiencias interactivas.
Ladda ner och installera
Ladda ner Node.js desde la web oficial en nodejs.org e instálalo för ditt systemoperativa system. På Windows, macOS eller Linux installeras och paketeras. Tras la instalación, bekräfta en terminal med: node -v y npm -v. npm es el gestor de paquetes de Node y te permitirá instalar librerías de terceros de forma sencilla.
Tu primerkontakt: Hola Mundo med VS-kod
Om du använder Visual Studio Code, puedes abrir la carpeta del proyecto y lanzar el terminal integrado con total comodidad. Crea una carpeta de trabajo y entra en ella: mkdir HelloNode && cd HelloNode.
Ahora abre esa carpeta en VS Code con kod.. Skapa en fil som heter app.js e introduce algo sencillo para arrancar: ett meddelande från konsolen.
var msg = 'Hello World';
console.log(msg);
Para ejecutarlo, abre la terminal integrada en VS Code (Ver > Terminal, o atajo Ctrl+`), y Lanza node app.js. Verás el clásico output "Hello World" en la consola; sí, sencillo, men bekräftar que todo va bien.
De sero en tjänst: min HTTP-server
Nod trae un módulo nativo lalamado 'http' con el que puedes crear un servidor en pocas líneas. El corazón es http.createServer, que recibe una función callback que se ejecuta cada vez que llega una petición.
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('Hola Mundo');
response.end();
}).listen(8888);
Arráncalo med node server.js och besöka http://localhost:8888/. La magia de Node está en su modello orientado a eventos: pasas una función y el runtime la “llama de vuelta” (återuppringning) cuando sucede el evento (una petición entrante).
Entendiendo callbacks, asincronía y flujo de ejecución
En JavaScript las funciones son ciudadanos de primera: se pueden pasar como argumentos, devolver y almacenar en variables. Este patrón encaja con el bucle de eventos de Node: tu código registra funciones que se ejecutan cuando ocurren sucesos (por ejemplo, llega una petición HTTP).
Det är avgörande att förstå skillnaden mellan operaciones bloqueantes y no bloqueantes. Si introducerar algo que ocupa la CPU durante segundos (por ejemplo, un bucle de espera), el processo entero se detiene y todas las peticiones sufren. En Node, trabaja siempre que puedas con E/S asíncrona y callbacks o promesas para evitar bloquear el hilo.
Diseño modulär: servidor, router och manejadores
Separera ansvarsområden te ayudará a escalar el proyecto: un módulo para el servidor HTTP, otro para el enrutador y otros para los controladores (begärhanterare). Puedes exponer funciones con exports y requerir módulos locales con require('./miModulo').
Una estructura típica podria ser: index.js som en ingångspunkt, server.js med HTTP-servern, router.js para decidir a qué función mandar cada ruta y requestHandlers.js con la lógica de cada endpoint. Esta organización mantiene el código readible y fácil de probar.
Extrayendo la ruta y enrutando
El objeto request tiene la URL solicitadaDen inhemska modulen url tillåt extrahera sökvägsnamn y, si har falta, la query. Med andra ord bestämmer routern om du vill ejecutar.
var url = require('url');
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
// route(pathname) ...
}
Routern som tar emot mottagaren ruttkarta och funktionskarta (un objeto donde cada clave es una ruta, y el valor, el handler), junto con el pathname, y comprueba si hay una función asociada. Si existe, la ejecuta; nej, devuelve un 404.
Haciendo que el handler responda (el patrón correcto)
En vanemässig försök es hacer que el controlador retorne un string y que el servidor lo escriba. Pero esto falla cuando el handler necesita hacer algo asíncrono (como leer de disco o ejecutar un comando). La solución efectiva es injicera objektsvaret hasta el hanterare y que el propio hanterare escriba la respuesta cuando la tenga (por ejemplo, dentro del callback de una función 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();
}
}
Denna metod tillåter svarade justo cuando la E/S asíncrona concluye, sin bloquear el processo ni forzar a devolver datos antes de tiempo.
Express: skapa en webbapp på en minut
Express es un framework minimalista para Node.js det underlättar gestionar, vyer, middleware och användning av HTTP. Con su generador puedes crear la estructura de un proyecto en segundos, con carpetas para rutas, vistas y recursos estáticos.
- Skapa en mapp för dina projekt:
mkdir ExpressProjects && cd ExpressProjects. - Släktena en plantilla:
npx express-generator HelloWorld --view=pugskapa en app med motor de vyer Mops. - Öppna VS-koden med
code .och granska strukturen: bin (arrangemang), allmän (JS/CSS/bilder), rutter (ruttkontroller), visningar (plantillor), app.js (konfiguration), package.json (skript och beroenden). - Installera beroenden med
npm installpå projektets matta. - Starta appen. Till exempel, med depuración:
npx cross-env DEBUG=HelloWorld:* npm start. - öppnar http://localhost:3000. Prueba a cambiar la vista principal: I
views/index.pug, stöder titeln avh1 "Hello World!"och ladda.
Express incorpora lo necesario para hantera GET, POST, PUT och DELETE, använd middleware, servar estáticos, renderizar vyer och estructurar una app de varias paginas con menos fricción.
npm y módulos incorporados de Node
npm es el gestor de paquetes de Node y te permite instalar librerías de terceros. Till exempel, för añadir Express: npm install express. Då kan du require('express') y utilizarlo en tu código. Esta flexibilidad es clave para crecer con tu proyecto.
Dessutom, Nod ingår inbyggda moduler för kommunala verksamheter: fs (arkiv), http/https (servitörer), path (rutor), os (systemdata), url (analys av URL) och mycket mer. Puedes importarlos con require() utan att installera någonting.
Probando un módulo nativo: information del system
El módulo 'os' ofrece datas del system operativo. Abre la consola y entra en el REPL de Node con node para probar funciones rápidamente sin crear archivos.
- Skriv
os.platform()para sabre la plataforma (win32, linux, darwin...). Bekräfta SO aktiv direkt. - med
os.arch()obtendrás la arquitectura (x64, arm64…). Användbart för binärer eller byggen. - USA
os.cpus()para ver los nucleos disponibles. Idealisk för att balansera lasten con clusteres o processos hijos. - Sal del REPL med
.exiteller tryck Ctrl+C två gånger. Snabbt och utan rester.
Biblioteca de terceros util en el día a día
Ekosystemet npm är enormt. Algunas använder populära: skarp (tratamiento de imágenes y compresión), PDFKit (PDF-generation), validator.js (validering av kurvor) bildmin y UglifyJS (minifiering), spritesmith (sprites), winston (loggning) y commander.js (CLI). Installeras med npm install <paquete> när du behöver dem.
Cómo ejecutar código Node.js desde archivo
Guarda tu código en un archivo, por ejemplo app.js, och utkastare med node app.js en la terminal. Esto inicia tu programa y verás los resultados en consola o, si levantas un servidor, en tu navegador.
Del REPL a la aplicación real: flujo completo
Probar en el REPL es perfecto para funciones pequeñas, pero en cuanto tu código crece, te conviene pasar a archivos, organizar módulos y añadir scripts de npm. De esta forma podrás automatisera tareas con npm run y documentar los comandos de inicio en package.json.
Manejando data POST sin bloquear
Cuando un usuario envía un formulario, el cuerpo de la petición puede llegar en varios trozos. En el servidor (återuppringning de createServer) añade-lyssnare data y end para ir acumulando el contenido y processarlo al final. Indica también la codificación, por ejemplo UTF-8, para manipularlo correctamente.
request.setEncoding('utf8');
var postBody = '';
request.addListener('data', function(chunk) {
postBody += chunk;
});
request.addListener('end', function() {
// route(handle, pathname, response, postBody)
});
Si necesitas extraer campos individuales, använda modulen 'querystring' para parsear el cuerpo cuando llega como application/x-www-form-urlencoded: querystring.parse(postBody).text, Till exempel.
Operaciones costosas y exec no bloqueante
För ejecutar comandos del system sin detener el servidor, utiliza child_process.exec du svarade på återuppringning. Puedes añadir opciones como timeout o maxBuffer för att kontrollera comandos pesados. El patrón es siempre el mismo: ingenting blockerar, y responder cuando haya datos.
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 laddar upp flera delar (bilder från andra arkiv) lo más práctico es recurrir a un paquete especializado. Módulos como formidabel underlätta parsering av formulär multipart/form-data, acceder a los archivos temporales y moverlos a su destino. La idé es la misma: återuppringningar/löften y trabajar de forma segura con strömmar.
Aunque la implementación completa escapa a los primeros pasos, lo importante es que integres el upload en tu flujo: server som får receptet, router que dirige a la ruta de subida, y hanterare que valida, guarda y responde con el resultado (por ejemplo, mostrando la imagen).
Estructura de vistas y contenido dinámico
Si optas av Express med Pug u otro motor, el controlador pasa data a la vista y esta los renderiza. Para un formulario sencillo con un textarea enviado por POST y una ruta que lo muestra, basta con dos hanterare: uno que sirve el formulario y otro que processa y devuelve el contenido mottagen.
God organisatorisk praxis
Evita-monoliticos. Divide en módulos, nombra funciones con verbos que expresen acciones (av ejemplo, iniciar, subir, lista), y desacopla con inyección de dependencias cuando tenga sentido (pasando funciones o mapas de rutas al servidor y al router). Mantener las capas ligeras te permitirá crecer sin dolores.
Qué puedes construir con Node.js
Händelsestyrd modell och icke-blockerande Det finns speciella funktioner för: webbservrar, API:er REST, appar och tidiga applikationer (chatt, instrumentpaneler), bots och CLI:er, integrationer med databaser, trabajokontroller, och hårdvarukontroll. La facilidad para manejar websockets y streaming lo convierte en una elección natural para experiencias interactivas.
- Webbservrar och webbplatser med plantor eller SSR.
- REST API: er preparadas para alto tráfico.
- Realtid con sockets för chatt, meddelanden eller spel.
- kommandoradsverktyg att automatisera uppgifter.
- Processer con ficheros y baser de data, cola och rörledningar.
- IoT-hårdvara med speciella bibliotek.
Herramientas de aprendizaje y práctica
Det finns entornos interactivos que muestran código y salida lado a lado, ideals para entender ejemplo rápidos. På samma gång, för att skapa nya saker: documentarte, copiar ejemplos y ejecutar en lokal con tu terminal es más que suficiente al principio.
Visual Studio Code: produktividad sin salir del editor
El terminal integrado, el depurador y las extensions de VS Code hacen que trabajar con Node sea muy cómodo. Desde “Ver > Terminal” puedes abrir shells, cambiar el predeterminado y ejecutar node o npm run sin abandonar el redaktör. Además, konfigurera launch.json te permitirá depurar paso a paso.
Apuntes de version y estabilidad
Muchas guías clásicas se probaron con versiones antiguas de Node, men los conceptos se mantienen vigentes: callbacks, módulos nativos, asincronía, enrutado y separation de responsabilidades. Hoy trabajarás con versiones actuales, más rápidas y seguras, y con un ecosistema npm aún más rico.
Ladda ner och hjälpmedel
Puedes ampliar estudio con documentación, PDF-filer och tutorials. Revisa siempre la web oficial de Node para novedades y descarga, e identifica fuentes didácticas que incluyan övningar, frågesporter och repetitioner para afianzar conocimientos a medida que avances.
Detta kompletterande material, encontrarás guías introductorias och referencias prácticas con ejemplos, liksom enlaces descarga cuando sea necesario. Håll fokus på att öva: leer está bien; ejecutar, romper cosas y arreglarlas, mejor.
Komplett exempel: miniapp för router och hanterare
Juntando-bitarTänk dig ett projekt med index.js som arrangerar servern, server.js med HTTP och POST-parsning, router.js que besluta qué función ejecutar y requestHandlers.js con dos rutas: una que muestra un formulario y otra que enseña el texto 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 mínimo ya tienes un servidor funcional y no bloqueante, con rutas y controladores separados, preparado para crecer hacia vyer, uppladdningar eller integración med databaser.
La clave de Node está en pensar en "acciones": pasar funciones, inyectar dependencias cuando convenga y mantener pequeños los bloques de responsabilidad. Dessutom kan du använda en adapter och en adapter för att överensstämma med kompletta funktioner.
Todo lo visto te da una bas sólida: desde instalar Node y ejecutar tu primer script, pasando por VS Code, un servidor HTTP nativo, enrutado propio, Express, npm, módulos nativos, REPL, asincronía sin bloqueos y manejo de formularios POST. Con práctica y pequeñas iteraciones, podrás construir proyectos cada vez más completos sin perder claridad en el código.