Menu
CoddyTech

Moduły CommonJS

Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 10 z 33.

Wiele kodu Node, który będziesz czytać w pakietach npm i starszych samouczkach, korzysta z innego systemu modułów.

CommonJS eksportuje za pomocą module.exports i importuje za pomocą require. Plik z rozszerzeniem .cjs jest zawsze plikiem CommonJS, niezależnie od tego, z czego korzysta reszta projektu, a import takiego pliku udostępnia obiekt module.exports jako domyślny:

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

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

exports początkowo jest tym samym obiektem co module.exports. exports.hello = hello dodaje do tego obiektu; exports = { hello } zastępuje zmienną, a importer otrzymuje pusty obiekt.

challenge icon

Wyzwanie

Łatwy

Starszy plik legacy/stats.cjs jest napisany w stylu CommonJS, z użyciem module.exports. Użyj go w pliku notes.js, aby dodać polecenie stats.

  1. W pliku legacy/stats.cjs dokończ funkcję countWords(notes). Otrzymuje ona tablicę notatek i zwraca łączną liczbę zawartych w nich słów, zliczonych we wszystkich notatkach. Słowa są oddzielone spacjami. Dla trzech początkowych notatek Buy milk, Call Ada i Water the plants zwraca 7. Dla pustej tablicy zwraca 0.
  2. W pliku notes.js zaimportuj plik za pomocą import stats from './legacy/stats.cjs'. To plik CommonJS, więc stats jest obiektem module.exports, a funkcją jest stats.countWords.
  3. Dodaj polecenie stats do łańcucha, przed końcowym else. Wyświetla ono jeden wiersz: liczbę notatek, a następnie liczbę słów.
    3 notes, 7 words
    Polecenie where i pozostałe polecenia nadal działają.

Wypróbuj: wpisz stats w polu po $ node notes.js i naciśnij Enter. Zobaczysz 3 notes, 7 words. Następnie wpisz add Buy bread, a potem ponownie stats: nadal zobaczysz 3 notes, 7 words, ponieważ magazyn zapomina o nowych notatkach po zakończeniu programu.

Spróbuj swoich sił

// Starszy moduł napisany w stylu CommonJS.
function countWords(notes) {
    // Zwróć łączną liczbę słów we wszystkich notatkach.
    return 0;
}

module.exports = { countWords };

Wszystkie lekcje w sekcji Podstawy Node.js

Poćwicz samodzielnie: Edytor online Express