Semestre 1, 2025
Node.js es un entorno de ejecución de JavaScript fuera del navegador.
No es un lenguaje, es un runtime para ejecutar JavaScript del lado del servidor.
Permite usar JavaScript tanto en el frontend como en el backend.
Descargar desde https://nodejs.org (usar versión LTS).
Verificar la versión instada:
node -v # versión de node
Correr scripts:
node archivo.js # ejecutar un archivo
node . # si hay un index.js
Gestor de paquetes oficial de Node.js.
npm init -y
Crea un archivo package.json en donde se puede configurar información del proyecto y se guardan las versiones de los paquetes instalados.
`node_modules` contiene las dependencias instaladas.
Debe agregarse a `.gitignore`.
Para poder utilizar la notación de export/import, la notación de ES6 (ECMAScript 6: especificación de lenguaje de la que se basa Javascript) es necesario agregar la siguiente línea en el packages.json
"type": "module"
{
"name": "nd",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"description": "",
"dependencies": {
}
}
Archivo de Javascript que exporta su código para ser utilizado en otros scripts.
Desde un módulo es posible exportar funciones, clases, objetos y variables hacia el main. Se utiliza la sintaxis de export e import
// Exportar explicitamente una funcion
export function saludo() {
console.log("hello world")
}
// Exportar explicitamente una variable
export const nombre = "Modulo"
Es posible exportar más de una estructura. En el principal hacemos:
import { saludo, nombre } from "./modulo.js";
saludo()
console.log(nombre)
También es posible exportar un (solo uno por módulo) valor predeterminado. Para esto se usa la sintaxis de export default
const predeterminado = {
mensaje: "hello world"
}
export default predeterminado;
En el main se puede usar cualquier nombre para importar el módulo:
import objeto from "./modulo.js";
console.log(objeto);
// operaciones.js
export function sumar(a, b) {
return a + b;
}
// principal.js
import { sumar } from './operaciones.js';
console.log(sumar(2, 3));
// mensaje.js
export default "Hola desde Node";
// app.js
import saludo from './mensaje.js';
console.log(saludo);
Process es un objeto global (igual que console) que brinda información sobre el proceso actual que está corriendo Node.
Este brinda propiedades y métodos para poder interactuar con el proceso que está corriendo.
Versión de Node:
console.log(process.version);
Al igual que los navegadores web; Node Js cuenta con su propio loop de eventos.
Esto permite dividir la carga de operaciones en diferentes hilos (threads) y de esa forma prevenir operaciones que bloqueen nuestra aplicación.
Asynchronous Event-Driven Javascript Runtime.
process.on('exit', () => {
console.log('El proceso está por terminar');
});
Es posible crear eventos propios. Esto se puede hacer de la siguiente forma:
import { EventEmitter } from "events";
const emisor = new EventEmitter();
emisor.on("disparar", () => {
console.log("Bang 🔫");
});
emisor.emit("disparar");
Para interactuar con archivos de forma síncrona es posible utilizar:
import { readFileSync } from 'fs';
const contenido = readFileSync('archivo.txt', 'utf-8');
console.log(contenido);
Para interactuar con archivos de forma asíncrona es posible utilizar:
import { readFile } from 'fs';
readFile('archivo.txt', 'utf-8', (err, data) => {
if (err) throw err;
console.log(data);
});
La terminación Sync hace referencia en que se corre de forma síncrona; es decir que puede causar un bloqueo.
import { readFile } from 'fs/promises';
const texto = await readFile('archivo.txt', 'utf-8');
console.log(texto);
Siempre es mejor usar promesas:
import { readFile } from "fs/promises";
async function archivo() {
const archivo = await readFile("ejemplo.txt", "utf8");
console.log(archivo);
}
archivo();
✅ Ejecuta JavaScript en el servidor
✅ Es asíncrono y orientado a eventos
✅ Tiene un ecosistema robusto gracias a NPM