?
- es un entorno de ejecución de js que permite ejecutar js fuera del navegador (en este caso seria el servidor )
- es asincrono y es orientada a eventos
- en consola podemos escribir simplemente node y comensar a escribir codigo en js
- dentro de visual estudio en la consola y con la url correspondiente al archivo js que queramos ejecutar fuera del navegador ponemos: node index.js
- globalThis es una variable global en toda nuestra aplicación
Patrón de diseño de modulo
Es un patrón que permite encapsular código en bloques reutilizables, evitando contaminar el ámbito global y ayudando a organizar tu aplicación. En Node.js esto se hace mediante archivos y la forma en que exportas/importas contenido entre ellos, es como cuando haciamos las funciones y para reutilizarlas teniamos que importar de otros archivos. Un módulo puede contener tantas funciones, clases, objetos o variables como necesites, y tú decides qué exportas. Existen 2 metodos para usar el atron de modulo en NodeJS
- Encapsulación cada archivo con modulo activo las variables definicas ahi nadie fuera lo ve
- exportacion controlada tu eliges que mostrar al exterior con export y dejar como privado sin exportar
- una buena practica es crear cada modulo por tematica que agrupo las funciones segun la misma.
1. CommonJS ((con require y module.exports)
es el sistema de módulos por defecto hasta antes de ES Modules pero sigue siendo usado aun hoy. (forma vieja)
operaciones.js
// Encapsulamos funciones
function sumar(a, b) {
return a + b;
}
function restar(a, b) {
return a - b;
}
// Exportamos lo que queremos que esté disponible fuera
module.exports = {
sumar,
restar,
};
app.js
const math = require('./math');
console.log(math.sumar(5, 3)); // 8
console.log(math.restar(10, 4)); // 6
2. ES Modules (con import y export)
a partir de node.js v12 podemos usar los modulos nativos de JavaScript (forma moderna)
❗ Requiere que tu package.json tenga: "type": "module"
o que el archivo sea .mjs (la opcion mas practica a mi parecer)
¿que es eso de archivo .mjs?
en Node.js significa "modulo JavaScript" y se usa para indicar explicitamente que ese archivo esta escrito usando ES Modules (el sistema moderno con import/export), en lugar de CommonJS (require/module.exports).
nota: tanto para exportar como el que importa deben de tener la extensión .mjs
operaciones.mjs
export function sumar(a, b) {
return a + b;
}
export function restar(a, b) {
return a - b;
}
app.mjs
import { sumar, restar } from './math.mjs';
console.log(sumar(2, 2)); // 4
console.log(restar(7, 3)); // 4
Módulos nativos
es parte fundamental del entrorno de desarrollo backend son bibliotecas ya incluidas en Node.js, no requiere instalarlos y estan disponible para ser importados y usarlos.
Ejemplos populares:
- fs – para trabajar con el sistema de archivos
- path – para rutas de archivos
- http – para crear servidores web
- - url – para manejar URLs
- os – información del sistema operativo
- crypto – utilidades de cifrado
- events – sistema de eventos personalizado
Como se usan? * sistema clasico
const fs = require('fs');
const path = require('path');
- sistema moderno
import fs from 'fs';
import path from 'path';
nota: Node.js permite importar módulos nativos con import sin necesidad de especificar ruta o extensión.
Aplicacion de modulos nativos (ejemplos)
1. Información del sistema operativo
import os from 'os';
console.log('Sistema operativo:', os.platform());
console.log('Memoria libre:', os.freemem());
console.log('CPU info:', os.cpus());
2.Sistema de archivos
import fs from 'fs';
// Leer un archivo de forma síncrona
const contenido = fs.readFileSync('archivo.txt', 'utf-8');
console.log(contenido);
// Escribir en un archivo
fs.writeFileSync('nuevo.txt', 'Hola Jordan!');
// Leer un archivo de forma asíncrona