Modules intégrés de Node.js
Les modules intégrés de Node.js sont des modules fonctionnels de base fournis avec le runtime Node.js et peuvent être utilisés sans installation supplémentaire. Ces modules fournissent des fonctions système de base telles que les opérations sur les fichiers, la communication réseau et la gestion des processus, et sont des outils fondamentaux pour le développement Node.js.
Contrairement aux modules tiers qui doivent être installés via npm, les modules intégrés peuvent être chargés directement via larequire()fonction, par exemple :
const http = require('http'); // Module HTTP
Introduction aux modules intégrés courants
Voici une description détaillée et un aperçu fonctionnel des principaux modules intégrés de Node.js.
| Nom du module | Description | Classes/Méthodes courantes | Utilisations typiques |
|---|---|---|---|
| fs (Système de fichiers) | Opérations sur le système de fichiers | readFile, writeFile, mkdir, readdir, createReadStream, createWriteStream |
Lecture/écriture de fichiers, opérations sur les répertoires |
| path | Gérer les chemins de fichiers | join, resolve, dirname, basename, extname |
Gestion des chemins multiplateforme |
| http | Serveur/client HTTP | createServer, request, get |
Créer un serveur/client web |
| https | Serveur/client HTTPS | createServer, request |
Créer des services web sécurisés |
| url | Analyse et traitement d'URL | parse, format, URLClasse |
Analyse et construction d'URL |
| querystring | Gestion des chaînes de requête | parse, stringify |
Gérer les paramètres de requête d'URL |
| os | Informations sur le système d'exploitation | cpus, freemem, totalmem, homedir, hostname |
Obtenir des informations système |
| events | Gestion des événements | EventEmitter, on, emit, once |
Système d'événements personnalisé |
| flux | Opérations sur les flux | Readable, Writable, Duplex, Transform, pipe |
Gérer les flux de données |
| crypto | Fonctionnalité de chiffrement | createHash, createCipher, createDecipher, randomBytes |
Chiffrement/déchiffrement/hachage |
| zlib | Compression/décompression | createGzip, createGunzip, createDeflate, createInflate |
Compression/décompression de données |
| util | Outils utilitaires | promisify, inherits, format, types |
Fonctions utilitaires |
| child_process | Gestion des processus enfants | exec, execFile, spawn, fork |
Créer des processus enfants |
| cluster | Gestion de cluster | fork, isMaster, isWorker |
Répartition de charge multi-processus |
| dns | Résolution de noms de domaine | lookup, resolve, reverse |
Résolution de noms de domaine |
| domain | Module de gestion des erreurs provenant de plusieurs opérations asynchrones | create , run, add |
Fournit un mécanisme pour regrouper plusieurs opérations d'E/S différentes et gérer leurs erreurs de manière uniforme. |
| net | Opérations réseau | createServer, connect, Socket |
Serveur/client TCP |
| dgram | Datagramme UDP | createSocket, send, bind |
Communication UDP |
| readline | Lire ligne par ligne | createInterface, on('line') |
Interaction en ligne de commande |
| repl | Interpréteur interactif | start, context |
Créer un environnement REPL |
| vm | Machine virtuelle | runInContext, createContext, Script |
Exécuter du code JavaScript |
| assert | Tests d'assertions | equal, strictEqual, deepEqual, throws |
Assertions de tests unitaires |
| buffer | Gestion des données binaires | Buffer, alloc, from, concat |
Gérer les données binaires |
| console | Sortie console | log, error, time, timeEnd |
Sortie de débogage |
| timers | Minuteurs | setTimeout, setInterval, setImmediate, clearTimeout |
Tâches planifiées |
| perf_hooks | Surveillance des performances | performance, PerformanceObserver |
Mesure des performances |
| worker_threads | Threads de travail | Worker, isMainThread, parentPort |
Programmation multithread |
1. fs (module du système de fichiers)
fsLe module fournit des API pour interagir avec le système de fichiers, prenant en charge les opérations synchrones et asynchrones.
Fonctionnalités principales :
- Lire/écrire des fichiers
- Créer/supprimer des répertoires
- Surveiller les modifications de fichiers
- Obtenir des informations sur les fichiers
Exemple de code :
Exemple
// Lire le fichier de manière asynchrone
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
// Écrire un fichier de manière synchrone
try {
fs.writeFileSync('output.txt', 'Hello Node.js');
console.log('File written successfully');
} catch (err) {
console.error(err);
}
2. path (module Path)
pathLe module fournit des fonctions utilitaires pour gérer les chemins de fichiers et de répertoires, et peut être utilisé sur toutes les plateformes.
Méthodes courantes :
path.join()- Joindre des cheminspath.resolve()- Résoudre en chemin absolupath.basename()- Obtenir le nom du fichierpath.extname()- Obtenir l'extension du fichier
Exemple de code :
Exemple
const fullPath = path.join(__dirname, 'files', 'example.txt');
console.log(fullPath); // Sortie similaire à : /home/user/project/files/example.txt
const ext = path.extname('index.html');
console.log(ext); // Sortie : .html
3. http (module HTTP)
httpLe module permet à Node.js de fonctionner comme serveur ou client HTTP.
Fonctionnalités principales :
- Créer un serveur HTTP
- Effectuer des requêtes HTTP
- Gérer les requêtes et réponses HTTP
Exemple de code : créer un serveur simple
Exemple
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Node.js Server');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
4. events (module d'événements)
eventsLe module fournit une interface de programmation événementielle et constitue la base de la programmation asynchrone dans Node.js.
Concepts clés :
- Classe EventEmitter
- Écoute d’événements (
on) - Déclenchement d’événements (
emit)
Exemple de code :
Exemple
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// Écouter l’événement
myEmitter.on('event', () => {
console.log('L’événement a été déclenché !');
});
// Déclencher l’événement
myEmitter.emit('event');
5. os (Module du système d’exploitation)
osLe module fournit des méthodes utilitaires et des propriétés liées au système d'exploitation.
Fonctionnalités courantes :
- Obtenir des informations sur le processeur
- Obtenir des informations sur la mémoire
- Obtenir des informations sur les interfaces réseau
- Obtenir le répertoire temporaire du système
Exemple de code :
Exemple
console.log(os.platform()); // Plateforme du système d'exploitation
console.log(os.totalmem()); // Mémoire totale du système
console.log(os.freemem()); // Mémoire disponible du système
console.log(os.cpus()); // Informations sur le processeur
Autres modules intégrés importants
1. util (Module utilitaire)
utilLe module fournit diverses fonctions utilitaires, notamment :
- Vérification de type
- Formatage de chaînes
- Conversion de fonctions de rappel en Promesses
- Utilitaires d'héritage
2. crypto (Module cryptographique)
cryptoLe module fournit des fonctionnalités de chiffrement, notamment :
- Algorithmes de hachage
- HMAC
- Chiffrement/déchiffrement
- Signatures numériques
3. stream (module Stream)
streamLe module est une interface abstraite pour la gestion des données en flux, et de nombreux modules dans Node.js sont implémentés à partir de flux.
4. child_process (module Child Process)
child_processLe module permet de créer et de contrôler des processus enfants, et peut exécuter des commandes système ou d'autres programmes.
5. url (module URL)
urlLe module fournit des outils pour l'analyse et le formatage des URL.
Comment utiliser les modules intégrés
Tous les modules intégrés peuvent être chargés directement via lerequire()fonction :
Exemple
Notes :
- Les noms de modules n'ont pas besoin de chemin
- Les noms de modules sont sensibles à la casse
- Aucune installation requise, fourni avec Node.js
- Différentes versions de Node.js peuvent inclure différents modules intégrés
Avantages des modules intégrés
- Haute performance: étroitement intégré à l'environnement d'exécution Node.js
- Stabilité: testé en profondeur, fiabilité élevée
- Aucune installation requise: fonctionne immédiatement
- Multiplateforme: comportement cohérent sur différents systèmes d'exploitation
- Documentation complète: documentation officielle détaillée