Node.js supporta anche i “nuovi” moduli ES6, quindi solo per motivi didattici si può leggere l’uso dell’altro tipi di moduli: CommonJS.
In questo esempio si vedrà l’uso di require ed exports.
Il codice sorgente può essere organizzato in moduli, in modo che sia riutilizzabile anche in Node.js.
Per creare un nuovo modulo si può inizializzare una cartella vuota:
mkdir moduloesempio cd moduloesempio npm init
Quest’ultimo comando pone alcune domande sul progetto, come: nome, entry point, autore, licenza, ecc.
Si potrebbe salvare il file entry point nel percorso ./src/index.js
Questo entry point è utile anche perchè il modulo webpack possiede nella configurazione lo stesso ./src/index.js
di default.
Controllare nella cartella il contenuto del file package.json
simile a questo:
{
"name": "progetto",
"version": "0.1.0",
"description": "",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
"keywords": [],
"author": "",
"license": "GPL-3+",
"devDependencies": {
"webpack": "^5.4.0",
"webpack-cli": "^4.2.0"
},
"dependencies": {
}
}
Si potrebbe creare un progetto con una struttura interna di questo tipo, composta da tre file:
+ ── src ├─── index.js ├─── funzione_uno.js └─── funzione_due.js
In questo caso index.js non contiene funzioni, ma è utilizzato solo per raccogliere i nomi di tutte le funzioni del modulo (non serve a fare niente altro). Questo è il codice sorgente:
"use strict"; //index.js exports.funzione_uno = require('./funzione_uno'); exports.funzione_due = require('./funzione_due');
Ad esempio, una funzione potrebbe essere:
"use strict"; // funzione_uno.js function funzione_uno() { console.log('uno'); } module.exports = { funzione_uno: funzione_uno // è possibile aggiungere un alias }
Per usare tale funzione, si importa il modulo dal file index.js
"use strict"; const modulo = require('./index.js'); modulo.funzione_uno(); modulo.funzione_due();