0 XP
?
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èmeSyntaxeUsage
CommonJSrequire() / module.exportsNode.js classique
ES Modulesimport / exportStandard 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"
  }
}
ChampRôle
dependenciesPaquets nécessaires en production
devDependenciesPaquets pour le développement (tests, lint...)
scriptsCommandes 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é

CommandeAction
npm init -yCré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)
importImporte un module (ESM)

Exercices 🎯

  1. Crée un projet avec npm init -y, installe lodash, et utilise _.debounce() dans un fichier .mjs
  2. Crée un module calcul.mjs exportant add, sub, mul, div et importe-le dans app.mjs
  3. Ajoute un script "dev": "node --watch app.mjs" à ton package.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.