Intermédiaire35 min25 XP
Objectifs de cette leçon
- Utiliser require() pour importer des modules
- Comprendre la différence entre CommonJS et ES Modules
- Créer et exporter ses propres modules
Modules et npm 📦
Le système de modules
Node.js organise le code en modules — des fichiers autonomes qui exportent et importent du code.
| Système | Syntaxe | Usage |
|---|---|---|
| CommonJS | require() / module.exports | Node.js classique |
| ES Modules | import / export | Standard moderne (ES6+) |
CommonJS vs ES Modules
CommonJS (CJS)
// utils.js const formatDate = (date) => date.toISOString().split('T')[0]; const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1); module.exports = { formatDate, capitalize };
// app.js const { formatDate, capitalize } = require('./utils'); console.log(formatDate(new Date())); // "2026-07-17" console.log(capitalize("hello")); // "Hello"
ES Modules (ESM)
// utils.mjs (ou ajouter "type": "module" dans package.json) export const formatDate = (date) => date.toISOString().split('T')[0]; export const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
// app.mjs import { formatDate, capitalize } from './utils.mjs'; console.log(formatDate(new Date())); console.log(capitalize("hello"));
💡 ES Modules est le standard moderne. Utilise-le pour les nouveaux projets.
npm : le gestionnaire de paquets
# Initialiser un nouveau projet npm init -y # Crée package.json avec les valeurs par défaut # Installer un paquet npm install express # Ajoute express + ses dépendances npm install -D nodemon # Dépendance de développement uniquement # Installer tout le projet (après git clone) npm install
package.json
{ "name": "mon-serveur", "version": "1.0.0", "type": "module", "scripts": { "start": "node server.js", "dev": "nodemon server.js", "test": "jest" }, "dependencies": { "express": "^4.18.2", "dotenv": "^16.3.1" }, "devDependencies": { "nodemon": "^3.0.2" } }
| Champ | Rôle |
|---|---|
dependencies | Paquets nécessaires en production |
devDependencies | Paquets pour le développement (tests, lint...) |
scripts | Commandes personnalisées (npm run dev) |
Modules natifs de Node.js
import fs from 'node:fs/promises'; // Fichiers import path from 'node:path'; // Chemins import http from 'node:http'; // Serveur HTTP import crypto from 'node:crypto'; // Cryptographie import os from 'node:os'; // Infos système
💡 Le préfixe
node:est la syntaxe moderne pour les modules natifs.
Créer un module local
// src/helpers.js export function slugify(text) { return text .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-|-$/g, ''); } export function generateId() { return crypto.randomUUID(); }
// src/app.js import { slugify, generateId } from './helpers.js'; console.log(slugify("Bonjour le Monde !")); // "bonjour-le-monde" console.log(generateId()); // "3f8a2c1b-..."
Résumé
| Commande | Action |
|---|---|
npm init -y | Crée un package.json |
npm install <paquet> | Installe un paquet |
npm install -D <paquet> | Installe un paquet de dev |
npm run <script> | Lance un script défini |
require() | Importe un module (CJS) |
import | Importe un module (ESM) |
Exercices 🎯
- Crée un projet avec
npm init -y, installelodash, et utilise_.debounce()dans un fichier.mjs - Crée un module
calcul.mjsexportantadd,sub,mul,divet importe-le dansapp.mjs - Ajoute un script
"dev": "node --watch app.mjs"à tonpackage.json
⚡ Simulateur — Modules
Étape 1/4📝 Pseudo-code
1const math = require("./math");
2console.log(math.add(2, 3));
3// ES Modules
4import { add } from "./math.js";
⚙️ Exécution
📦 Mémoire
module
math
🔀 Flux d'exécution
require("./math")
3
Import CommonJS
require("./math") importe un module local. Node.js résout le chemin par rapport au fichier courant.