CommonJS
Система модулей Node.js через require/module.exports.
Зачем нужно
Исторический стандарт модулей в Node.js. Синхронная загрузка, динамические require. Всё ещё используется в огромном количестве пакетов.
Где используется
- Серверный Node.js (legacy и текущие проекты)
- npm-пакеты с обратной совместимостью
- Конфиги (webpack.config.js, jest.config.js)
Code
// math.js
const PI = 3.14159;
function sum(a, b) { return a + b; }
module.exports = { PI, sum };
// app.js
const { PI, sum } = require('./math');
console.log(sum(2, 3));
// Экспорт одного значения
module.exports = class User { /* ... */ };
// Условный require (динамический)
if (needFeature) {
const feature = require('./feature');
}
// __dirname, __filename доступны
console.log(__dirname); // путь к папке модуля
console.log(__filename); // путь к файлу модуля