Tipos de módulos en Node.js: CommonJS vs ES modules
Clase 4 de 20 • Curso de Fundamentos de Node.js
Contenido del curso
Módulos y gestión de paquetes
Módulos nativos en Node.js
- 8

CRUD de archivos con Node.js fs
10:20 min - 9

Script Node.js fs y Whisper API
16:31 min - 10

Cómo implementar transcript audio con OpenAI
06:28 min - 11

Console API en Node.js: métodos básicos
10:22 min - 12

Console.count y console.group en JavaScript
09:16 min - 13

Node.js: módulo os para datos del sistema
04:57 min - 14

Crypto de Node.js: hash SHA-256 completo
05:41 min - 15

Módulo process de Node.js en detalle
17:04 min - 16

Módulo timers en Node.js: setTimeout y setInterval
11:05 min - 17

Streams en Node.js para archivos grandes
10:47 min - 18

Buffers en Node.js: crear y transformar datos binarios
06:44 min
Servidores con Node.js
Comprende cómo organizar y reutilizar código en Node.js con módulos. Aquí verás las diferencias clave entre CommonJS y ES modules, cuándo elegir cada uno y cómo usar módulos nativos y de terceros. Con ejemplos claros y directos, podrás aplicar estas prácticas de forma inmediata.
¿Qué son los módulos de Node.js y por qué importan?
Los módulos encapsulan funcionalidades específicas como piezas de Lego. Permiten reutilizar código, facilitar el mantenimiento y evitar conflictos en aplicaciones grandes. En Node.js hay tres opciones comunes:
- CommonJS: usa require y module.exports. Ejecución síncrona.
- ES modules: usa import y export. Ejecución asíncrona por diseño.
- Módulos nativos y de terceros: integrados en Node.js (como fs, http, path, os) o instalados desde npm.
Habilidades que practicas aquí: - Diseño modular y separación de responsabilidades. - Elección de sistema de módulos según el contexto del proyecto. - Lectura de archivos con el módulo nativo fs. - Gestión de dependencias con npm.
¿CommonJS o ES modules: cuál usar hoy?
Si tu proyecto es moderno (Node 18 o superior, incluyendo la 23), usa ES modules con import/export. Desde la versión 12 se habilitó de forma experimental y es estable desde la 14. Aún encontrarás proyectos con require; puedes usar ambos, pero debes elegir uno por consistencia.
- CommonJS (.js): require, module.exports, ejecución síncrona. Fue el sistema predeterminado en los inicios de Node.js.
- ES modules (.mjs): import, export, ejecución asíncrona. Sintaxis moderna.
¿Cómo se exporta e importa con CommonJS?
Ejemplo con dos funciones: suma y resta.
// src/math.js
function add(a, b) { return a + b; }
function subtract(a, b) { return a - b; }
module.exports = { add, subtract };
// src/main.js
const mat = require('./math');
console.log(`suma: ${mat.add(5, 3)}`);
console.log(`resta: ${mat.subtract(5, 3)}`);
Ejecútalo con Node: node src/main.js.
¿Cómo se exporta e importa con ES modules?
Ejemplo con multiplicación y división usando extensión .mjs.
// src/mat.mjs
export function multiply(a, b) { return a * b; }
export function divide(a, b) { return a / b; }
// src/main.mjs
import { multiply, divide } from './mat.mjs';
console.log(`multiplicación: ${multiply(5, 3)}`);
console.log(`división: ${divide(6, 2)}`);
Ejecútalo así: node src/main.mjs.
¿Cómo aplicar módulos nativos y de terceros en Node.js?
Además del sistema de módulos, aprovecha lo que ya trae la plataforma y lo que ofrece el ecosistema. Los módulos nativos vienen integrados (por ejemplo, fs para file system, http, path, os). Los módulos de terceros se instalan desde npm con npm install.
¿Cómo leer archivos con el módulo nativo fs?
Crea un archivo example.txt con el texto "Hello world" y luego léelo con fs.
// src/native.js
const fs = require('fs');
const data = fs.readFileSync('example.txt', 'utf8');
console.log('file content:', data);
Ejecuta: node src/native.js.
Conceptos clave que aplicas: - Uso de require para módulos nativos. - Lectura síncrona con readFileSync y codificación UTF-8.
¿Cómo instalar y usar un módulo de terceros con npm?
Primero instala el paquete desde el registro de npm:
- Ejecuta:
npm install nombre-del-paquete. - Se crea la carpeta node_modules (debe ignorarse en control de versiones).
- Requiere el paquete y úsalo en tu código.
// src/third-party.js
const pkg = require('nombre-del-paquete');
console.log(pkg(1));
console.log(pkg(3));
Luego ejecuta: node src/third-party.js. Así validas que el módulo de terceros funciona en tu entorno.
¿Ya probaste estos ejemplos o migraste tu proyecto a ES modules? Comparte tu repositorio y dudas en los comentarios.