TechLead

Modulos

ES Modules e import/export

Modulos en JavaScript

Los modulos te permiten dividir tu codigo en archivos separados y reutilizables. ES Modules (ESM) es el sistema de modulos estandar en JavaScript moderno.

Exportando

// matematicas.js

// Export con nombre (named exports)
export const PI = 3.14159;

export function sumar(a, b) {
  return a + b;
}

export function restar(a, b) {
  return a - b;
}

// Export al final (alternativa)
const multiplicar = (a, b) => a * b;
const dividir = (a, b) => a / b;

export { multiplicar, dividir };

// Export con nombre diferente
export { multiplicar as mult };

Export Default

// Usuario.js

// Solo puede haber UN export default por archivo
export default class Usuario {
  constructor(nombre) {
    this.nombre = nombre;
  }

  saludar() {
    return `Hola, soy ${this.nombre}`;
  }
}

// O con funcion
// export default function crearUsuario(nombre) { ... }

// Puedes combinar default y named exports
export const ROLES = ["admin", "usuario", "invitado"];

Importando

// app.js

// Importar named exports (usa llaves)
import { sumar, restar, PI } from "./matematicas.js";

console.log(sumar(2, 3)); // 5
console.log(PI); // 3.14159

// Importar con alias
import { multiplicar as mult } from "./matematicas.js";

// Importar todo como objeto
import * as Matematicas from "./matematicas.js";
console.log(Matematicas.sumar(2, 3));
console.log(Matematicas.PI);

// Importar default export (sin llaves)
import Usuario from "./Usuario.js";
const usuario = new Usuario("Ana");

// Combinar default y named imports
import Usuario, { ROLES } from "./Usuario.js";

Import Dinamico

// Cargar modulos bajo demanda (code splitting)
async function cargarModulo() {
  const modulo = await import("./modulo-grande.js");
  modulo.hacerAlgo();
}

// Util para:
// - Cargar codigo solo cuando se necesita
// - Reducir tamano del bundle inicial
// - Cargar condicionalmente

button.addEventListener("click", async () => {
  const { procesarDatos } = await import("./procesador.js");
  procesarDatos();
});

Usando Modulos en el Navegador

<!-- En HTML, usa type="module" -->
<script type="module" src="app.js"></script>

<!-- O inline -->
<script type="module">
  import { saludar } from "./utilidades.js";
  saludar();
</script>

<!-- Los modulos tienen alcance propio -->
<!-- Se cargan de forma diferida por defecto -->
<!-- Siempre se ejecutan en modo estricto -->

Consejos

  • Usa named exports para multiples exportaciones
  • Usa default export para la exportacion principal del modulo
  • Mantene los modulos pequenos y enfocados
  • Usa imports dinamicos para optimizar rendimiento
  • Siempre incluye la extension .js en imports del navegador