Moduli CommonJS
Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 10 di 33.
Gran parte del codice Node che leggerai nei pacchetti npm e nei tutorial meno recenti usa un altro sistema di moduli.
CommonJS esporta con module.exports e importa con require. Un file che termina con .cjs è sempre CommonJS, indipendentemente da ciò che usa il resto del progetto, e un import di un file del genere ti restituisce il suo oggetto module.exports come predefinito:
// greet.cjs
function hello(name) {
return 'Hello, ' + name;
}
module.exports = { hello };
// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));exports inizialmente è lo stesso oggetto di module.exports. exports.hello = hello vi aggiunge una proprietà; exports = { hello } sostituisce la variabile e chi importa riceve un oggetto vuoto.
Sfida
FacileUn file più vecchio, legacy/stats.cjs, è scritto secondo lo stile CommonJS, con module.exports. Usalo dal tuo notes.js per aggiungere un comando stats.
- In
legacy/stats.cjs, completacountWords(notes). Riceve l'array di note e restituisce il numero totale di parole contenute, contando tutte le note. Le parole sono separate da spazi. Per le tre note iniziali,Buy milk,Call AdaeWater the plants, restituisce7. Per un array vuoto restituisce0. - In
notes.js, importa il file conimport stats from './legacy/stats.cjs'. È un file CommonJS, quindistatsè il suo oggettomodule.exportse la funzione èstats.countWords. - Aggiungi un comando
statsalla catena, prima dell'ultimoelse. Stampa una riga: il numero di note, poi il numero di parole.3 notes, 7 wordswheree gli altri comandi continuano a funzionare.
Prova: digita stats nella casella dopo $ node notes.js e premi Invio. Vedrai 3 notes, 7 words. Poi digita add Buy bread, quindi di nuovo stats: vedrai ancora 3 notes, 7 words, perché l'archivio dimentica le nuove note quando il programma termina.
Provalo tu
// Un modulo più vecchio, scritto secondo lo stile CommonJS.
function countWords(notes) {
// Restituisci il numero totale di parole contenute in tutte le note.
return 0;
}
module.exports = { countWords };
Tutte le lezioni di Fondamenti di Node.js
Esercitati da solo: Playground Express