Imagina que estás escribiendo una aplicación y todo tu código vive en un único archivo de 500 líneas. Encontrar una función es como buscar una aguja en un pajar. Cambiar algo da miedo porque puede romper otra cosa. Y si otro desarrollador quiere trabajar contigo, se pisarán constantemente.
Los módulos resuelven este problema. Son la forma que tiene Node.js de dividir tu código en piezas organizadas, cada una con una responsabilidad clara.
En Node.js, cada archivo .js es automáticamente un módulo. Eso significa que las variables y funciones que defines en un archivo no son visibles desde otros archivos, a menos que las exportes explícitamente.
Es como si cada archivo viviera en su propia habitación cerrada. Para compartir algo con el exterior, tienes que abrirla puerta.
Node.js nació con su propio sistema de módulos llamado CommonJS. Usa dos piezas fundamentales:
module.exports — para sacar cosas de un archivorequire(...) — para traer cosas de otro archivoVamos a crear dos archivos: uno que exporta una función y otro que la usa.
utils.js — el módulo que exportaCon module.exports le dices a Node: "cuando alguien haga require de este archivo, dale este objeto".
index.js — el archivo que importaCon require("./utils") le dices a Node: "ve al archivo utils.js y dame lo que exporta". El ./ al inicio es importante — le dice a Node que busque en la carpeta actual, no en node_modules.
Puedes exportar un objeto con varias cosas:
O puedes exportar una sola cosa directamente:
Si exportas directamente, el require cambia un poco:
Ambas formas son válidas. La primera es más común cuando un módulo exporta varias funciones.
Olvidar el ./ en la ruta:
Exportar con un nombre e importar con otro:
CommonJS es el sistema de módulos que llevan usando los proyectos Node.js desde 2009. Aunque existe una alternativa más moderna (que veremos en la siguiente lección), la enorme mayoría del código Node que encontrarás en el mundo real — librerías, tutoriales, proyectos legacy — usa CommonJS.
Entender require y module.exports no es opcional. Es parte del vocabulario básico de Node.
utils.js, crea una función saludar(nombre) que devuelva un saludomodule.exportsindex.js, impórtala con require("./utils")console.lognode index.js en la terminal para verificarAcabas de aprender el patrón fundamental de organización en Node.js. Todo lo que construyas de ahora en adelante se basará en dividir código en módulos.