- Node.js funciona con un modello orientado a eventos y E/S no bloqueante ideal para concurrencia.
- Arquitectura modulær: servidor, ruter og behandlere forenkler eskalering og mantener.
- Uttrykk for å lage apper på nettet med ruter, utsikter og mellomvare.
- 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. Det er en del av Hola Mundo som har en app som er web med Express, som passer til systemet, npm y el enfoque asíncrono que hace tan especial al ecosistema de Node.
Además de orientarte con requisitos previos, configuración en Visual Studio Code og primeros proyectos , verás cómo organizar un server HTTP, enrutar peticiones, manejar controladores, trabajar con datas 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
Det er nødvendig med grunnleggende JavaScript (tipos, variabler, funksjoner, objekter) og probar cosas con la consola. Node.js er 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 synd crear un hilo por cada petición.
Con Node puedes construir servidores web, APIs REST, herramientas de linea de comandos, apps and tiempo real (chat, notificaciones) , integrering med databaser og 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.
Last ned og installer
Last ned Node.js desde la web-offisielle nodejs.org og installasjon for operativ system. På Windows, macOS eller Linux er installert og pakkeløsninger. Tras la instalación, bekreftelse og 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 primer kontakt: Hola Mundo med VS-kode
Hvis du bruker 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 kode.. Opprett en fil som heter app.js introduser algo sencillo para arrancar: en melding fra konsollen.
var msg = 'Hello World';
console.log(msg);
For ejecutarlo, abre la terminal integrada en VS-kode (Ver > Terminal, eller Ctrl+`), og lanza node app.js. Verás el clásico utgang "Hello World" en la consola; sí, sencillo, men bekrefter hva du skal gjøre.
Tjenesten: en min HTTP-server
Node 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 og besøk 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" (tilbakeringing) cuando sucede el evento (una petición entrante).
Entendiendo tilbakeringinger, asincronía og 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).
Es crucial entender la diferencia entre operaciones bloqueantes y no bloqueantes . Si introduserer algo que occupa la CPU durante segundos (por ejemplo, un bucle de espera), el prosessen 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.
Modulbasert: servidor, ruter og manejadores
Skill ansvar te ayudará a escalar el proyecto: un módulo para el servidor HTTP, otro para el enrutador y otros para los controladores (forespørselsbehandlere). Puedes exponer funciones con exports y requerir módulos locales con require('./miModulo').
Una estructura típica podria ser: index.js como pointo de entrada, server.js med en HTTP-server, router.js for decidir a qué función mandar ruta y requestHandlers.js con la logica de cada endpoint. Esta organización mantiene el código lesible y facil de probar.
Extrayendo la ruta y enrutando
Forespørselen om en URL-forespørselDen opprinnelige modulen url tillat ekstrahere stinavn y, si har falta, la query. Med det samme bestemmer ruteren for å løse ut.
var url = require('url');
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
// route(pathname) ...
}
Ruteren får en funksjonskart (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; nei, devuelve un 404.
Haciendo que el handler responda (el patrón correcto)
Una tentación habitual 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 inyectar el objeto respons hasta el handler y que el propio handler escriba la respuesta cuando la tenga (for 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();
}
}
Este enfoque permite responder justo cuando la E/S asíncrona concluye , sin bloquear el proseso ni forzar a devolver data antes de tiempo.
Express: lag en app på et minutt
Express es un framework minimalista for Node.js que facilitate gestionar rutas, views, middleware og utilidades HTTP. Con su generador puedes crear la estructura de un proyecto en segundos, con carpetas para rutas, vistas y recursos estáticos.
- Opprett en mappe for prosjektene dine:
mkdir ExpressProjects && cd ExpressProjects. - Slekter en plante:
npx express-generator HelloWorld --view=puglag en app med motor de vistas Pug. - Åpne VS-koden med
code .og revidere strukturen: bin (arrangement), offentlig (JS/CSS/bilder), ruter (rutekontrollere), visninger (plantillaer), app.js (konfigurasjon), pakke.json (skript og avhengigheter). - Installer avhengigheter med
npm installpå prosjektets teppe. - Start appen. For eksempel, med depuración:
npx cross-env DEBUG=HelloWorld:* npm start. - åpner http://localhost:3000. Prueba a cambiar la vista rektor: På
views/index.pug, støtter tittelen avh1 "Hello World!"og lade opp.
Express inkorporerer nødvendig for gestionar GET, POST, PUT og SLETT , bruk mellomvare, server estáticos, gjengi utsikter og strukturer en app de varias sider med menos fricción.
npm y módulos incorporados de Node
npm es el gestor de paquetes de Node y te permite installer librerías de terceros. For eksempel, for añadir Express: npm install express. Da kan du require('express') y utilizarlo en tu código. Esta flexibilidad es clave para crecer con tu proyecto.
Además, Node inkludert innebygde moduler for kommunale formål: fs (arkiver), http/https (tjenere), path (ruter), os (systemdata), url (analysere URL) og mye mer. Puedes importarlos con require() uten å installere noe.
Probando un módulo nativo: informasjon om systemet
El módulo 'os' ofrece datas del sistema 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 ...). Bekreft SO aktiv direkte. - med
os.arch()obtendrás la arquitectura (x64, arm64…). Brukes for binærprogrammer eller bygg. - Usa
os.cpus()para ver los nucleos disponibles. Ideelt for å likevekte last con clusteres o processos hijos. - Sal del REPL med
.exiteller trykk Ctrl+C to ganger. Raskt og uten rester.
Biblioteca de terceros util en el día a día
Økosystemet npm er enormt. Algunas utnytter populære: skarpe (tratamiento de bilder og kompresjon), PDFKit (PDF-generasjon), validator.js (validering av kurver), bildemin y UglifyJS (minimalisering), spritesmith (sprites), winston (logging) y commander.js (CLI). Installeres med npm install <paquete> når du trenger dem.
Cómo ejecutar código Node.js desde archivo
Guarda tu código en un archivo, por ejemplo app.js, og utkjøring 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 automatiser tareas con npm run y dokumentar los comandos de inicio en package.json.
Manejando data POST sin bloquear
Du kan bruke en formel, el cuerpo de la petición puede llegar en varios trozos. En el servidor (tilbakeringing de createServer) añade-lyttere data y end para ir acumulando el contenido y processarlo al final. Indica también la codificación, for eksempel 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, bruker modulen 'spørrestreng' para parsear el cuerpo cuando llega como application/x-www-form-urlencoded: querystring.parse(postBody).text, for eksempel.
Operaciones costosas y exec no bloqueante
For ejecutar commandos del sistema synd detener el servidor, utiliza child_process.exec y responde en el callback. Puedes añadir opciones como timeout o maxBuffer for å kontrollere comandos pesados. El patrón es siempre el mismo: ingenting å blokkere, y responder cuando haya data.
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 mer 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 laster opp multiparte (bilder fra andre arkiver) lo más práctico es recurrir a un paquete especializado. Módulos como formidable enklere analyse av formularer multipart/form-data, acceder a los archivos temporales y moverlos a su destino. La ideen er la misma: tilbakeringinger/løfter y trabajar de forma segura con streams.
Aunque la implementación completa escapa a los primeros pasos, lo importante es que integres el upload en tu flujo: servidor que recibe el formulario, router que dirige a la ruta de subida, y handler que valida, guarda y responde con el resultado (por la imagen, mostrando).
Estructura de vistas y contenido dinámco
Si optas por Express con Pug u otro motor , el controlador pasa datas 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 handlers: uno que sirve el formulario y otro que processa y devuelve el contenido recibido.
God organisatorisk praksis
Evita archivos monoliticos . Divide en módulos, nombra funciones con verbos que expresen acciones (por ejemplo, iniciar , subir , listar ), 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
Denne hendelsesdrevne modellen og ikke-blokkerende har en spesiell funksjon for: webtjenester, API-er REST, apper og virkelige programmer (chat, dashboards), bots og CLI-er, integrerte databaser, datakontroller, og maskinvarekontroll. Tilrettelegging for manejar websockets og streaming av konvierte og una elección naturlig for interaktive opplevelser.
- Nettservere og nettsteder med planter eller SSR.
- REST APIer preparadas para alto tráfico.
- Sanntid con sockets for chat, varsler eller spill.
- kommandolinjeverktøy å automatisere oppgaver.
- Proceser con ficheros y bases de data, cola og rørledninger.
- IoT-maskinvare med spesifikke biblioteker.
Herramientas de aprendizaje y práctica
Eksister entornos interactivos que muestran código y salida lado a lado, ideals para entender ejemplos rápidos. På samme tid, fremgangsmåte for å lage cuentas: documentarte, copiar ejemplos y ejecutar en lokal con tu terminal es mer que suficiente al principio.
Visual Studio Code: Productividad sin salir del editor
Den integrerte terminalen, depuradoren og utvidelsene de VS Code harcen que trabajar con Node sea muy comodo. Desde “Ver > Terminal” puedes abrir shells, cambiar el predeterminado y ejecutar node o npm run sin abandonar el redaktør. Además, konfigurer launch.json te permitirá depurar paso a paso.
Apuntes de versjon og estabilidad
Muchas guías clásicas se probaron con versiones antiguas de Node, pero los conceptos se mantienen vigentes : callbacks, módulos nativos, asincronía, enrutado y separation de responsabilidades. Hoy trabajarás con versiones actuales, more rápidas y seguras, y con un ecosistema npm aún más rico.
Last ned tilleggsmidler
Et omfattende estudio med dokumentasjon, PDF-er og opplæringsprogrammer . Revisa siempre la web official de Node for novedades y download, e identifica fuentes didácticas que incluyan ownercicios, quizzer y retos for afianzar conocimientos a medida que avances.
Dette er et komplementært materiale, encontrarás guías introductorias og referencias prácticas con ejemplos, así como enlaces descarga cuando sea necesario. Mantén tu foco en practicar : leer está bien; ejecutar, romper cosas og arreglarlas, mejor.
Komplett eksempel: mini-app for ruter og behandlere
Juntando piezas . Forestill deg et prosjekt med index.js som skal arrangere tjenesten, server.js med HTTP og POST-parsing, router.js som bestemmer hvilken funksjon som skal sendes ut og requestHandlers.js med ruter: du har en formel og en annen engelsk tekst.
// 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;
Med denne funksjonelle funksjonen kan du ikke bruke blokkering , kontroll og kontroll av separadoser, forberedelser for å skape utsikter, opplastinger eller integrering 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. Du kan også bruke verktøyet og adapteren som er komplette.
Todo lo visto te da una base solida: 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 mer completos sin perder claridad en el código.