Menu
CoddyTech

Модули CommonJS

Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 9 из 24.

Большая часть кода Node, который вы будете встречать в пакетах npm и старых руководствах, использует другую систему модулей.

CommonJS экспортирует с помощью module.exports и импортирует с помощью require. Node по-прежнему выполняет такой код в файлах с расширением .cjs, а при импорте такого файла с помощью import вы получаете объект module.exports в качестве значения по умолчанию:

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

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

Изначально exports — это тот же объект, что и module.exports. exports.hello = hello добавляет свойство к нему; exports = { hello } заменяет переменную, и импортирующий код получает пустой объект.

challenge icon

Задание

Легко
  • Заверши countWords(notes) в legacy/stats.cjs: посчитай, сколько слов содержат все заметки вместе.
  • Импортируй эту функцию в notes.js с помощью import stats from './legacy/stats.cjs'.
  • Команда stats выводит 3 notes, 7 words.

Запусти node notes.js stats. Затем добавь заметку с помощью команды add и снова запусти stats: результат по-прежнему 3, так как пока ничего не сохраняется.

Попробуйте сами

// Старый модуль, написанный в стиле CommonJS.
function countWords(notes) {
    // Верни общее количество слов во всех заметках.
    return 0;
}

module.exports = { countWords };

Все уроки раздела Основы Node.js