CodeAventura
Node.js
▸Primeros pasos con Node.js▸Módulos: divide y vencerás (CommonJS)

Misión

// Crea una función saludar(nombre) que devuelva un saludo
// Expórtala con module.exports

TerminalTema: Vintage
04 / 15Módulos: divide y vencerás (CommonJS)
Anterior

Módulos: divide y vencerás

El problema de un solo archivo

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.

Cada archivo es un módulo

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.

CommonJS: el sistema original de Node

Node.js nació con su propio sistema de módulos llamado CommonJS. Usa dos piezas fundamentales:

  • module.exports — para sacar cosas de un archivo
  • require(...) — para traer cosas de otro archivo

Paso a paso

Vamos a crear dos archivos: uno que exporta una función y otro que la usa.

utils.js — el módulo que exporta

Con module.exports le dices a Node: "cuando alguien haga require de este archivo, dale este objeto".

index.js — el archivo que importa

Con 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.

Dos formas de exportar

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.

Errores que todos cometen al principio

Olvidar el ./ en la ruta:

Exportar con un nombre e importar con otro:

¿Por qué esto importa?

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.

Tu desafío 🚀

  1. En utils.js, crea una función saludar(nombre) que devuelva un saludo
  2. Expórtala usando module.exports
  3. En index.js, impórtala con require("./utils")
  4. Llámala con un nombre y muestra el resultado con console.log
  5. Ejecuta node index.js en la terminal para verificar

Acabas 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.