En Node.js il existe deux façons de gérer des modules:
ESM est le nouveau standard intégré depuis ECMAScript 6 pour la gestion des modules. Néanmoins historiquement Node.js utilise CJS depuis le début et à l’époque il y a eu beaucoup de soucis sur la spécification d’ESM (ce qui a rendu complexe l’implémentation dans l’écosystème Node js).
const { foo } = require("mymodule");
exports.foo = function boo() {
return foo();
}
Avec CJS il est nécessaire d’utiliser la function require() et des mots-clés comme module.exports alors qu’en ESM il vous sera possible d’utiliser les mots-clés import et export.
import { foo } from "mymodule";
export function boo() {
return foo();
}
Le support d’ESM sur Node.js devient de plus en plus stable et il n’est donc pas étonnant que cela deviennent le système de modules utilisé par défaut dans un futur proche.
Je vous recommande d’écouter les talks suivant pour mieux comprendre le sujet:
- Extra Special Modules - Myles Borins, Google
- Keynote: The Future of JavaScript is Universal - Myles Borins, Developer Advocate, Google
- ES Modules in Node.js - Gil Tayar
- Testing EcmaScript Modules - David Mark Clements
Articles en lien avec ESM
- FR [Débutant] ESM et CJS - le match
- Get Ready For ESM - Sindresorhus
- Pure ESM package - Sindresorhus
- 🆕 Using ES Modules (ESM) in Node.js: A Practical Guide (Part 1
⬅️ 🐢 Node.js: 🔍 Debugging & Profiling | ➡️ 🐢 Node.js: WebSocket