Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Un file più vecchio, legacy/stats.cjs, è scritto secondo lo stile CommonJS, con module.exports. Usalo dal tuo notes.js per aggiungere un comando stats.

  1. In legacy/stats.cjs, completa countWords(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 Ada e Water the plants, restituisce 7. Per un array vuoto restituisce 0.
  2. In notes.js, importa il file con import stats from './legacy/stats.cjs'. È un file CommonJS, quindi stats è il suo oggetto module.exports e la funzione è stats.countWords.
  3. Aggiungi un comando stats alla catena, prima dell'ultimo else. Stampa una riga: il numero di note, poi il numero di parole.
    3 notes, 7 words
    where e 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