I moduli ES dividono il codice in file, ognuno con la sua interfaccia pubblica dichiarata con export e import.

// math.js
export const PI = 3.14159;
export function area(r) { return PI * r * r; }
export default function saluta() { return "hi"; }

// app.js
import saluta, { PI, area } from "./math.js";

C'è una differenza importante: gli export nominati ({ PI, area }) hanno un nome fisso e si possono importare selettivamente; l'export default è uno solo per file e lo rinomini come vuoi in import.

Preferire i named export aiuta il tree-shaking: il bundler può scartare le funzioni che non importi, alleggerendo il file finale. Un dettaglio che, moltiplicato per decine di librerie, fa la differenza sul peso della pagina.