M02L09Semana 3~2.5 h
L09 — Módulos ES en Node
~2.5 h · Semana 3
Partes el código en módulos con import/export, rutas explícitas y un árbol de carpetas que aguante la CLI .
Objetivo
Reorganizar katas/modelo en módulos ES ("type": "module") y entender por qué los imports terminan en .js.
Por qué importa
Un index.ts de 400 líneas es deuda. La semana 3 separa dominio, I/O y CLI.
Pasos
1. Activar ESM (20 min)
En package.json:
{
"type": "module",
"scripts": {
"build": "tsc",
"start": "tsx src/cli/demo.ts"
}
}
Imports entre archivos TS usan extensión .js en el import (resolución NodeNext).
2. Barrel opcional (40 min)
src/modelo/index.ts reexporta habito y almacen. No abuses: solo donde simplifica.
3. Mover CLI demo (45 min)
src/cli/demo.ts importa crearHabito y nombresOrdenados, imprime un flujo mínimo.
4. EJ cap. 10 (50 min)
Lee módulos en EJ; refactoriza un ejercicio anterior a dos archivos.
Lectura de esta lección
| Fuente | Qué leer |
|---|---|
| Eloquent JavaScript | Cap. 10 |
| TS Handbook | Modules |
| MDN | Módulos JS |
| Catálogo | Bibliografía · M02 |
Hecho cuando
npm run start(otsx src/cli/demo.ts) funciona tras el refactor.- No hay imports circulares obvios (si los hay, documenta el arreglo).
- Commit
refactor(m02): módulos ES.
Errores comunes
- Olvidar
.jsen imports relativos con NodeNext. - Mezclar
requireyimport. - Barrel que reexporta todo y oculta dependencias.