Menu
CoddyTech

CommonJS-Module

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 10 von 33.

Ein Großteil des Node-Codes, den du in npm-Paketen und älteren Tutorials lesen wirst, verwendet ein anderes Modulsystem.

CommonJS exportiert mit module.exports und importiert mit require. Eine Datei, die auf .cjs endet, ist immer CommonJS, unabhängig davon, was der Rest des Projekts verwendet, und ein import einer solchen Datei liefert dir ihr module.exports-Objekt als Standardexport:

// greet.cjs
function hello(name) {
    return 'Hello, ' + name;
}
module.exports = { hello };

// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));

exports ist anfangs dasselbe Objekt wie module.exports. exports.hello = hello fügt ihm etwas hinzu; exports = { hello } ersetzt die Variable, und der Import erhält ein leeres Objekt.

challenge icon

Aufgabe

Einfach

Eine ältere Datei, legacy/stats.cjs, ist auf die CommonJS-Art mit module.exports geschrieben. Verwende sie in deiner notes.js, um einen stats-Befehl hinzuzufügen.

  1. Vervollständige in legacy/stats.cjs die Funktion countWords(notes). Sie erhält das Array mit den Notizen und gibt die Gesamtzahl der Wörter in allen Notizen zurück. Wörter werden durch Leerzeichen getrennt. Für die drei anfänglichen Notizen Buy milk, Call Ada und Water the plants gibt sie 7 zurück. Für ein leeres Array gibt sie 0 zurück.
  2. Importiere in notes.js die Datei mit import stats from './legacy/stats.cjs'. Es handelt sich um eine CommonJS-Datei, daher ist stats ihr module.exports-Objekt und die Funktion ist stats.countWords.
  3. Füge vor dem abschließenden else der Kette einen stats-Befehl hinzu. Er gibt eine Zeile aus: zuerst die Anzahl der Notizen, dann die Anzahl der Wörter.
    3 notes, 7 words
    where und die anderen Befehle funktionieren weiterhin.

Probiere es aus: Gib stats in das Feld nach $ node notes.js ein und drücke die Eingabetaste. Du siehst 3 notes, 7 words. Gib dann add Buy bread und anschließend erneut stats ein: Du siehst weiterhin 3 notes, 7 words, weil der Speicher neue Notizen vergisst, wenn das Programm endet.

Probier es selbst

// Ein älteres Modul, im CommonJS-Stil geschrieben.
function countWords(notes) {
    // Gib zurück, wie viele Wörter alle notes zusammen enthalten.
    return 0;
}

module.exports = { countWords };

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground