In questo articolo vedremo come creare un modulo e importarlo in un altro file per poter utilizzare le funzioni e quant'altro che andremo a definire nel modulo stesso, ad esempio creiamo un modulo che chiameremo module.js e lo andremo ad importare in un file index.js.
Andiamo a definire qualche funzione nel nostro modulo
module.js
const arithmetic_average = (...n) => {
let count = n.length;
let sum = 0;
for (let i = 0; i < count; i++) {
sum += n[i];
}
let media = sum / count;
return media;
};
la funzione arithmetic_average è un'arrow function (funzione freccia) che calcola la media di numeri, per poter utilizzare questa funzione all'interno del file index.js dobbiamo importare il file module.js tramite il metodo require, per fare ciò dobbiamo fare in modo che il modulo sia esportabile, possiamo farlo in due modi usando uno degli oggetti exports oppure module.exports
Nel primo caso, cioè usando l'oggetto exports, scriveremo
module.js
const arithmetic_average = (...n) => {
let count = n.length;
let sum = 0;
for (let i = 0; i < count; i++) {
sum += n[i];
}
let media = sum / count;
return media;
};
exports.media = arithmetic_average;
ho definito una chiave media che è la funzione arithmetic_average (il nome della chiave può essere scelto a caso), quindi includiamo il modulo nel file index.js
index.js
const m = require('./module');
console.log(m);
definiamo una costante m che è il risultato del require di module.js, in questo esempio module.js e index.js si trovano nella stessa posizione quindi useremo "./" per includere il modulo, se lanciamo il comando node index.js otterremo il seguente risultato
❯ node index.js
{
media : { arithmetic_average: [Function: arithmetic_average] }
}
cioè un oggetto chiave valore, per poter chiamare la funzione arithmetic_average useremo la seguente sintassi m.media.arithmetic_average
index.js
const m = require('./module');
console.log(m.media.arithmetic_average(12, 4));
lanciando il comando node index.js
❯ node index.js
8
Se invece vogliamo usare module.exports la sintassi è diversa
module.js
const arithmetic_average = (...n) => {
let count = n.length;
let sum = 0;
for (let i = 0; i < count; i++) {
sum += n[i];
}
let media = sum / count;
return media;
};
module.exports = {
arithmetic_average,
};
cioè racchiudiamo tutto ciò che vogliamo esportare all'interno di un oggetto, quindi lanciando il comando node index.js
❯ node index.js
{ arithmetic_average: [Function: arithmetic_average] }
8
il primo risultato è la costante m che otteniamo dal require del modulo ed è un oggetto chiave valore, mentre il secondo risultato (8) è ciò che otteniamo invocando la funzione arithmetic_average
index.js
const m = require('./module');
console.log(m);
console.log(m.arithmetic_average(12, 4));