Nel precedente articolo abbiamo parlato di API in maniera generica. In questo invece approfondiremo i principali moduli inclusi nativamente in Node.js e che, per il momento, non implementano le specifiche CommonJS.
I moduli che approfondiremo sono quelli basilari che rientrano in qualsiasi applicazione web e che verranno utilizzati anche nei successivi articoli.
Il modulo globals
Il modulo globals è un modulo atipico in quanto non rappresenta una vera e propria libreria ma una serie di API incluse nel namespace globale dell'applicazione e quindi richiamabili direttamente.
Tra le funzioni di questo pseudo-modulo occorre ricordare:
- require che permette di includere moduli aggiuntivi
- setTimeout e setInterval per lavorare con i timer
Oltre alle funzioni sono presenti alcuni oggetti fondamentali come console che permette di accedere allo standard input e allo standard error del processo e variabili come __filename
e __dirname
valorizzate a runtime rispettivamente con il nome del filename avviato e con il nome della cartella corrente.
Il modulo http
Oltre ad includere la classe bootstrap (http.Server
) per avviare un server web, il modulo http include una serie di oggetti che permettono di utilizzare il protocollo in maniera indolore. Abbiamo già incontrato questo modulo nell'articolo precedente.
Il modulo url
Questo modulo permette di lavorare con gli url, creandoli a partire da oggetti oppure parsandoli a partire da stringhe. Di fondamentale importanza è il metodo parse che trasforma un url in un oggetto.
Il modulo path
Il modulo path permette di lavorare con i percorsi reali della macchina sulla quale è avviata l'applicazione. Abbiamo a disposizione metodi per navigare tra le cartelle e per montare path complessi a partire da più stringhe. Di vitale importanza per applicazioni che lavorano con il filesystem.
Il modulo FS - File System
Questo modulo permette, insieme col precedente, di lavorare a stretto contatto con il filesystem della macchina, eseguendo tutte le operazioni tipiche di questo ambito come ad esempio la copia, la rinominazione, la cancellazione, la lettura e la scrittura di file e cartelle.
Il modulo util
Come è facilmente intuibile dal nome, questo modulo include una serie di funzioni di utilità in ottica di introspezione delle variabili. Oltre ad una serie di funzioni logiche is*
(per esempio isArray
o isDate
) abbiamo la più generica inspect
, la format
per la formattazione di stringhe a partire da placeholder e la debug
e la log
come funzioni per il monitoraggio del flusso.
Il modulo net
Questo modulo permette agli sviluppatori più esperti di implementare applicazioni client-server a prescindere dal protocollo HTTP ma sfruttando i socket come strumenti più a basso livello e lavorando direttamente con le connessioni.
Utilizzare i moduli nelle app Node.js e richiamarne i metodi
Una volta analizzati i principali moduli disponibili in NodeJS, possiamo includere quelli necessari alla nostra applicazione semplicemente grazie alla funzione globale require. La funzione ritorna un riferimento al modulo esponendone tutte le funzionalità sotto forma di metodi.
Prendiamo come riferimento il modulo url, esso espone tre metodi: url.parse, url.format e url.resolve. Per utilizzarli è sufficiente includere il modulo e richiamarne i metodi.
var url = require('url');
console.log(url.parse('http://www.html.it'));
console.log(url.format({ host: 'www.html.it', protocol: 'http' }));
Se è necessario effettuare una singola chiamata ad un modulo possiamo invocare la funzione direttamente senza assegnarno ad una variabile locale:
console.log(require('url').parse('http://www.html.it'));