CommonJs e Module Pattern
CommonJs è un ecosistema ampio che ha l'obiettivo di standardizzare alcuni comportamenti di JavaScript come strumento di sviluppo che possa essere utilizzato anche al di fuori di un browser. In particolare la specifica di Module permette di definire un modulo che, grazie ad un oggetto exports, si può riutilizzare in modo flessibile in più progetti.
CommonJs ha un ruolo molto importante nella costruzione di un WorkFlow basato su ReactJs e WebPack.
I file di configurazione di WebPack ed i progetti che andremo a strutturare in ReactJs fanno grande uso della specifica Module e della direttiva require()
.
Sto semplificando il discorso in un modo disarmante ma non era obiettvivo di questo documento introdurre in modo completo il Module Pattern.
In codice javascript, in pratica
Definisco, all'interno di un file primoModulo.js, una nuova funziona javascript ed utilizzo l'oggetto exports
per aggiungere un suo riferimento.
module.exports = function() { return "Primo Modulo"; };
Definisco, all'interno di un file secondoModulo.js, una nuova funzione javascript dopo aver ottenuto un riferimento alla prima.
var PrimoModulo = require('primoModulo');
module.exports = function() {
return PrimoModulo() + " eseguito";
};
La funzione `require() si preoccupa di cercare sul disco fisso un file primoModulo.js e di leggerne il contenuto. Vedremo in seguito nel dettaglio come ciò avviene.
Lo scenario che si apre è quello di un sistema modulare in cui ogni singolo file javascript della nostra applicazione contiene un modulo, con funzionalità specifiche.
Le due parole chiave del Module Pattern in CommonJs sono:
exports
un oggetto che contiene i riferimenti ai nostri modulirequire()
per referenziare ed istanziare un oggetto di un modulo precedentemente definito