0Pricing
JavaScript Academy · Урок

Основы CommonJS — require/module.exports и exports

Изучите CommonJS: require(), module.exports, сокращённую запись exports и небольшой пример взаимодействия с ESM

«Основы CommonJS — require/module.exports и exports» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.

CJS: общая картина

Цель: читать и писать небольшие модули CommonJS.

  • require() загружает модули
  • module.exports — это объект экспорта
  • exports — сокращённая ссылка на тот же объект
  • Краткое знакомство с взаимодействием с ESM
Основы CommonJS — require/module.exports и exports — иллюстрация 1

require() — идея

require(path) возвращает экспортированный объект модуля в CommonJS.

// CommonJS import uses require()
const cjsExample = [
  "const math = require(\\"./math.js\\");",
  "console.log(math.sum(2, 3));"
];

console.log("require() example:");
for (const line of cjsExample) console.log(line);

// Emulate a loaded module object
const loaded = { sum: function (a, b) { return a + b; } };
console.log("emulated require sum:", loaded.sum(2, 3));
Основы CommonJS — require/module.exports и exports — иллюстрация 2

module.exports

Присвойте значение module.exports, чтобы экспортировать его (функцию, объект и т. д.).

// module.exports sets what the module returns
const lines1 = [
  "function greet(name) { return \\"Hi \\" + name; }",
  "module.exports = greet;"
];

console.log("module.exports example:");
for (const l of lines1) console.log(l);

// Emulate consumption
function greet(name) { return "Hi " + name; }
const api1 = greet; // like module.exports = greet
console.log("use exported fn:", api1("Ayla"));
Основы CommonJS — require/module.exports и exports — иллюстрация 3

Сокращённая запись exports

exports.prop = ... допустима; не переназначайте exports = ..., поскольку после этого ссылка больше не указывает на module.exports.

// exports is a shortcut to module.exports (same object)
const lines2 = [
  "// Good: add properties",
  "exports.sum = function (a, b) { return a + b; };",
  "",
  "// Pitfall: reassigning exports breaks the link",
  "exports = function () {}; // WRONG"
];

console.log("exports shortcut:");
for (const l of lines2) console.log(l);

// Emulate good usage
const moduleObj = {};
const exportsRef = moduleObj;  // like exports === module.exports initially
exportsRef.sum = function (a, b) { return a + b; };
console.log("sum via exportsRef:", moduleObj.sum(2, 4));
Основы CommonJS — require/module.exports и exports — иллюстрация 4

Несколько экспортов

Можно экспортировать объект, содержащий множество функций, и обращаться к ним через свойства.

// Export an object with multiple members
const lines3 = [
  "function add(a, b) { return a + b; }",
  "function mul(a, b) { return a * b; }",
  "module.exports = { add, mul };"
];

console.log("multiple exports object:");
for (const l of lines3) console.log(l);

// Emulate consumption
const api2 = {
  add: function (a, b) { return a + b; },
  mul: function (a, b) { return a * b; }
};
console.log("use add/mul:", api2.add(1, 2), api2.mul(2, 3));
Основы CommonJS — require/module.exports и exports — иллюстрация 5

ESM ↔ CJS: кратко о взаимодействии

Взаимодействие (вкратце):

  • При импорте CJS из ESM часто получается CJS module.exports в качестве экспорта по умолчанию.
  • Пример: import pkg from "./cjs.js", затем используйте pkg.add().
  • Делайте примеры простыми; по возможности не смешивайте стили в одном файле.
Основы CommonJS — require/module.exports и exports — иллюстрация 6

Тест по синтаксису экспорта CJS

Быстрая проверка: экспорт в CommonJS.

Основы CommonJS — require/module.exports и exports — иллюстрация 7

Повторение

Повторение: загружайте с помощью require(), экспортируйте через module.exports, добавляйте свойства с помощью exports.prop и не переназначайте exports. При взаимодействии с ESM содержимое CJS module.exports часто становится экспортом по умолчанию.

Основы CommonJS — require/module.exports и exports — иллюстрация 8

Часто задаваемые вопросы

Урок «Основы CommonJS — require/module.exports и exports» бесплатный?

Да — полный текст урока «Основы CommonJS — require/module.exports и exports» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Основы CommonJS — require/module.exports и exports»?

Изучите CommonJS: require(), module.exports, сокращённую запись exports и небольшой пример взаимодействия с ESM Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.

Сколько времени занимает урок «Основы CommonJS — require/module.exports и exports»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы ESM — import/export, экспорт по умолчанию и именованный
  2. Основы CommonJS — require/module.exports и exports
  3. Разрешение модулей в Node и браузерных сборщиках
← Назад к JavaScript Academy