CommonJS vs ESM

JavaScript 🟡 Mid

Definition

CommonJS (require/module.exports) est synchrone, dynamique et utilise par Node.js historiquement. ESM (import/export) est statique, asynchrone, supportant le tree shaking. ESM est le standard moderne.

Analogie

CommonJS = commander par telephone (dynamique, a la demande). ESM = liste de courses pre-ecrite (statique, analysable a l'avance).

Exemple de code

// CommonJS
const fs = require('fs');
module.exports = { readFile: fs.readFile };

// ESM
import { readFile } from 'fs';
export { readFile };

Cas d'usage

Choisir le bon systeme de modules selon le contexte : ESM pour le nouveau code, CommonJS pour la compatibilite Node.js legacy.

Anti-pattern

Melanger require() et import dans le meme fichier sans comprendre l'interoperabilite.
#core#modules#interview