Prerequisitos - instalacion de Homebrew y asdf en ubuntu
📘 Documentación Oficial
⭐ Frameworks Populares (ordenado de menor a mayor curva)
- Express — Framework minimalista y flexible para crear APIs y servidores HTTP con Node.js.
- Fastify — Framework rápido y eficiente, enfocado en alto rendimiento y bajo consumo de recursos.
- NestJS — Framework modular y estructurado, inspirado en Angular, ideal para aplicaciones escalables en Node.js.
🛠️ Instalación en Ubuntu
sudo apt update
sudo apt install nodejs npm
Para versiones actualizadas, se recomienda NodeSource:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
🍺 Instalación con Homebrew
brew install node
📦 Gestor de Paquetes Estándar
Node usa npm (incluido por defecto) o pnpm/yarn opcionalmente.
Instalar pnpm (globalmente):
npm install -g pnpm
🔧 Instalación con ASDF
# agregar plugin
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
# importar claves
bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
# instalar una versión
asdf install nodejs 20.11.0
# set global o local
asdf global nodejs 20.11.0
# o
asdf local nodejs 20.11.0
📄 Ejemplo .tool-versions
nodejs 20.11.0
🔧 Instalar NVM (Node Version Manager)
Mas alla de que puede usarse asdf para unificar todos los gestores de versiones en una sola herramienta, lo cierto es que el standard en node es NVM, asi que tambien me parase correcto dejar el standrad para familiarizarse con el.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.nvm/nvm.sh
Instalar una versión de Node.js con NVM
# Instalar la última versión LTS
nvm install --lts
# Instalar una versión específica
nvm install 20.11.0
# Usar una versión instalada
nvm use 20.11.0
# Definir versión por defecto
nvm alias default 20.11.0
# Lista de comandos útiles de NVM
nvm ls
nvm ls-remote
nvm ls-remote --lts
nvm ls
nvm uninstall 18
📄 Ejemplo .nvmrc
20.11.0
📝▶️ Crear y ejecutar un archivo Node.js
Crear archivo: touch index.js
Contenido de index.js
console.log('Hola Mundo Node');
💻 Ejecutar Localmente:
node index.js
🟩 Ejemplo básico en Node.js
🗂️🌐 Servidor Web de archivos estaticos.
Que Hace:
- Definir el nombre del parámetro de consulta (query parameter)
- Obtener el valor del parámetro de consulta de la URL.
- Se usa
url.searchParams.get()para acceder a los query parameters. - y se usa
stripTags(input), para limpiar de etiquetas < y > en entidades HTML.
- Se usa
- Se dibuja la variable recibida en el query parameter dentro de la etiqueta
📝 Crear archivo: touch server.js
📦 Contenido de server.js
import http from "http";
import { URL } from "url";
// Sanitización de url
function stripTags(input) {
return input.replace(/<[^>]*>/g, "");
}
const server = http.createServer((req, res) => {
const url = new URL(req.url, `http://localho7000`);
const username = stripTags(url.searchParams.get("username") || "invitado");
const html = `
<!DOCTYPE html>
<html lang="es">
<head><meta charset="UTF-8"><title>Hola</title></head>
<body style="text-align:center">
<h1>Hola, ${username}</h1>
</body>
</html>
`;
res.writeHead(200, { "Content-Type": "text/html" });
res.end(html);
});
server.listen(7000, () => {
console.log("Servidor en http://localhost:7000?username=Homero");
});
▶️ Correr el proyecto / levantar el servidor
node index.js
👉 visitar:
http://localhost:8000/?username=javier
⚙️🧩 Json API Rest
Que Hace:
- Lee los datos desde un archivo
data.json - expones 1 endpoint con esos datos
- Una Lista de personajes en
/characters - y los datos de un personaje por id
/characters/:id
- Una Lista de personajes en
Ejemplo de archivo: data.json
[
{
"id": 1,
"age": 39,
"name": "Homer Tompson",
"portrait_path": "https://cdn.thesimpsonsapi.com/500/character/1.webp"
},
{
"id": 2,
"age": 39,
"name": "Marge Simpson",
"portrait_path": "https://cdn.thesimpsonsapi.com/500/character/2.webp"
}
]
📝 Crear archivo: touch api.js
▶️ Contenido del archivo: api.js
import http from "http";
import fs from "fs";
import url from "url";
function loadCharacters() {
const json = fs.readFileSync("data.json", "utf8");
return JSON.parse(json);
}
const server = http.createServer((req, res) => {
res.setHeader("Content-Type", "application/json");
const parsedUrl = url.parse(req.url, true);
const path = parsedUrl.pathname;
const method = req.method;
const characters = loadCharacters();
// GET /characters → lista completa
if (method === "GET" && path === "/characters") {
res.end(JSON.stringify(characters));
return;
}
// GET /characters/:id → buscar por ID
const match = path.match(/^\/characters\/(\d+)$/);
if (method === "GET" && match) {
const id = parseInt(match[1], 10);
const found = characters.find((c) => c.id === id);
if (found) {
res.end(JSON.stringify(found));
return;
}
res.statusCode = 404;
res.end(JSON.stringify({ error: "Personaje no encontrado" }));
return;
}
// Ruta no encontrada
res.statusCode = 404;
res.end(
JSON.stringify({
error: "Ruta no encontrada",
url_lista: "http://localhost:7001/characters",
url_personaje: "http://localhost:7001/characters/1",
})
);
});
server.listen(7001, () => {
console.log("Servidor corriendo en http://localhost:7001/characters");
});
▶️ Correr el proyecto / levantar el servidor
node api.js
👉 visitar:
http://localhost:7001/characters
Para probar el sanitizado de url:
http://localhost:7001/characters/1

Top comments (0)