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.
Aufgabe
EinfachEine ä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.
- Vervollständige in
legacy/stats.cjsdie FunktioncountWords(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 NotizenBuy milk,Call AdaundWater the plantsgibt sie7zurück. Für ein leeres Array gibt sie0zurück. - Importiere in
notes.jsdie Datei mitimport stats from './legacy/stats.cjs'. Es handelt sich um eine CommonJS-Datei, daher iststatsihrmodule.exports-Objekt und die Funktion iststats.countWords. - Füge vor dem abschließenden
elseder Kette einenstats-Befehl hinzu. Er gibt eine Zeile aus: zuerst die Anzahl der Notizen, dann die Anzahl der Wörter.3 notes, 7 wordswhereund 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