Opplæring av Node.js for principiantes: de viktigste appen

Siste oppdatering: 11/19/2025
Forfatter: C SourceTrail
  • 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.

Opplæring Node.js for principiantes

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.

Orienteringsmidler med nødvendige tidligere, konfigurasjon av Visual Studio Code og primeros proyectos, på samme måte organiserer og tjener HTTP, bruker 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

Trenger en enkel tilgang til JavaScript (tipos, variabler, funciones, objetos) y ganas de 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.

Med node kan man konstruere webtjenester, API-er REST, herramientas de línea de comandos, apps og tiempo real (chat, varsler), 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.

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).

Det er viktig å forstå forskjellen mellom 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 tilbakeringinger 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 som inngangspunkt, server.js med HTTP-serveren, router.js para decidir a qué función mandar cada ruta y requestHandlers.js con la lógica de cada endepunkt. 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 mottar rutekart og 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)

Et vaneforsø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 inyectar el objeto response hasta el handler y que el propio handler 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();
  }
}

Denne tilnærmingen tillater 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 som muliggjør gestionar ruter, utsikter, mellomvare og bruk av HTTP. Con su generador puedes crear la estructura de un proyecto en segundos, con carpetas para rutas, vistas y recursos estáticos.

  1. Opprett en mappe for prosjektene dine: mkdir ExpressProjects && cd ExpressProjects.
  2. Slekter en plante: npx express-generator HelloWorld --view=pug lag en app med motor de vistas Pug.
  3. Å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).
  4. Installer avhengigheter med npm install på prosjektets teppe.
  5. Start appen. For eksempel, med depuración: npx cross-env DEBUG=HelloWorld:* npm start.
  6. åpner http://localhost:3000. Prueba a cambiar la vista rektor: På views/index.pug, støtter tittelen av h1 "Hello World!" og lade opp.

Express incorpora lo necesario para administrere GET, POST, PUT og DELETE, bruker mellomvare, server estáticos, gjengir 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.

  1. Skriv os.platform() para sabre la plataforma (win32, linux, darwin ...). Bekreft SO aktiv direkte.
  2. med os.arch() obtendrás la arquitectura (x64, arm64…). Brukes for binærprogrammer eller bygg.
  3. Usa os.cpus() para ver los nucleos disponibles. Ideelt for å likevekte last con clusteres o processos hijos.
  4. Sal del REPL med .exit eller 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 más exigente, el resto de rutas seguirá respondiendo con normalidad siempre que ingen hagas trabajo sincrónico costoso en el hilo rektor.

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: server som oppgir formelen, router que dirige a la ruta de subida, y behandleren que valida, guarda y responde con el resultado (por ejemplo, mostrando la imagen).

Estructura de vistas y contenido dinámco

Si optas av Express med Pug u annen 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 handlers: uno que sirve el formulario y otro que prosesa y devuelve el contenido mottatt.

God organisatorisk praksis

Evita monolittiske arkiver. Divide en módulos, nombra funciones con verbos que expresen acciones (por ejemplo, start, subir, ramse opp), 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

Bruk hendelsesdrevet modell og ikke-blokkerende Dette er et spesielt tilbud for: webtjenester, API-er REST, apper og virkelige applikasjoner (chat, dashboards), bots og CLI-er, integrerte databaser, trabajo-kontroller, 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, men los conceptos se mantienen vigentes: tilbakeringinger, modersmål, asincronía, enrutado og separación 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 descarga, e identifica fuentes didácticas que incluyan øvelser, spørrekonkurranser og øvelser para 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. Hold fokuset ditt på å øve: leer está bien; ejecutar, romper cosas og arreglarlas, mejor.

Komplett eksempel: mini-app for ruter og behandlere

Juntando-stykkerTenk deg et prosjekt med index.js som arrangerer tjeneren, server.js med HTTP og POST-parsing, router.js que bestemme 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 minimo ya tienes un servidor funcional y no bloqueante, Con rutas y controladores separados, preparado para crecer hacia vistas, 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 sólida: desde installer 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.

Relaterte innlegg: