Estendere NodeJS, creare nuovi moduli

15 maggio 2012

Prima di creare un nuovo modulo è necessario capire come si comporta la funzione require in base al parametro di tipo stringa ricevuto come parametro.

Come funziona require

Se passiamo alla funzione require il nome di uno modulo core di NodeJS, la funzione si occuperà di reperire il modulo dalla cartella delle librerie e di renderlo disponibile all’applicazione corrente.

Possiamo includere i nostri moduli anche a partire da percorsi personalizzati. Passando alla funzione require un percorso assoluto o relativo di un file, il motore di NodeJS si occupa di rendere fruibile il file all’interno dell’applicazione.

require('./modulo.js')
require('/home/utente/modulo.js') 

La cartella di default è ‘node_modules’, quindi passando alla funzione una stringa che non rappresenta un modulo core e non inizia con punti o backslash (‘‘), il motore NodeJS cerca il file nella cartella node_modules del progetto corrente. Se il file non viene trovato NodeJS si sposterà ricorsivamente nella cartella padre e continuerà la ricerca fino a trovare il file richiesto.

Questo meccanismo può essere comodo per avere un unico punto di accesso a moduli condivisi da più applicazioni (creando una cartella node_modules nella root di un utente significa permettere a tutte le applicazioni scritte da quell’utente di usufruire di quei moduli).

Includere moduli da NODE_PATH

Se le inclusioni precedenti non vanno a buon fine, NodeJS cercherà i moduli da includere all’interno della cartella definite dalla variabile di sistema $NODE_PATH.

Organizzare moduli in cartelle

Per i moduli più complessi e composti da più file, è possibile includere l’intero set di file con un unica chiamata a require. In questo caso è però necessario definire un file descrittore all’interno del modulo che permette al motore di conoscere quali sono i file da includere.

Questo è il meccanismo con il quale vengono incluse le librerie scaricate dal registro NPM.

Per approfondire questo meccanismo di loading il miglior riferimento è la documentazione ufficiale.

Creare il primo modulo

Un modulo non è nient’altro che un file (o un insieme di file) che definisce una serie di funzioni JavaScript e che le espone attraverso un oggetto exports globale. Assegnare quindi proprietà o metodi di questo oggetto nativo significa rendere la funzionalità disponibile da applicazioni esterne.

Guardiamo un esempio.

//simplemath.js
var sum = function(a, b) { //definiamo la funzione sum
  return a+b; 
}

var product = function(a, b) { //definiamo la funzione product
  return a*b; 
}

var private = function(a,b) {
  return "Io sono private!!"; 
}

exports.sum = sum; //esportiamo la funzione sum
exports.product = product; //esportiamo la funzione product 
//app.js
var sm = require('./simplemath');
console.log(sm.sum(1,2)); //echo 3
console.log(sm.product(1,2)); //echo 2;
console.log(sm.private(1,2)); //error!

Tutto molto semplice. Vengono definite le funzioni richieste e vengono “appese” all’oggetto exports rendendole di fatto pubbliche. Qualsiasi altra funzione definita nel file risulta privata e non invocabile se non dall’interno del modulo.

Nelle prossime lezioni metteremo in pratica le nozioni apprese fin’ora per mettere in piedi un’applicazione web vera e propria.

Tutte le lezioni

1 ... 3 4 5 ... 15

Se vuoi aggiornamenti su Estendere NodeJS, creare nuovi moduli inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Estendere NodeJS, creare nuovi moduli

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing