В JavaScript вы можете использовать либо модули Ecmascript 6 (ES6), либо модули CommonJS в вашем проекте, и между ними есть несколько различий, которые влияют на то, как загружаются ваши программы модули. В этой статье я исследую, как каждый работает и как это может повлиять на выполнение вашей программы.
Commonjs модули.
CommonJS – это исходная и модульная система по умолчанию Node.js, которая использует require и module.exports. Ниже приведен пример.
// Importing modules
const fs = require('fs');
const fileDelete = require('./fileDeleter');
const fileName = require('./fileNamer');
const writeFile = (data) => {
return fs.writeFileSync(fileName, data);
}
// Exporting writeFile module
modules.exports = writeFile;
С требованием вы не можете выборочно загружать только необходимые модули. Это означает, что даже модуль FeleDelete из приведенного выше примера будет импортирован, даже если он не нужен или не используется нигде. Кроме того, импорт модулей синхронно, что означает, что модуль имени файла не может быть импортирован до FS и модули Filelete импортируются, и неспособность импорта FileDelete приведет к ошибкам времени выполнения, даже если они нигде не используются в нашей программе. Модули CommonJS являются выбором для сервера node.js.
Модули Ecmascript
Модули Ecmascript являются относительно новыми и используют импорт и экспорт. Ниже приводится преобразование нашего примера CommonJS из вышеупомянутого в ESM.
// Importing modules
import fs from 'fs';
import fileDelete from './fileDeleter';
import fileName from './fileNamer';
const writeFile = (data) => {
return fs.writeFileSync(fileName, data);
}
// Exporting writeFile module
export default function writeFile;
С импортом вы загружаете только необходимые модули. Например, модуль FeleDelete из вышеизложенного не будет импортирован, поскольку он нигде не используется. Кроме того, импорт модулей является асинхронным, что означает, что как FS, так и имя файла импортируются одновременно. Как правило, вы хотите использовать ESM для ваших новых проектов.
… Как насчет .cjs и .mjs? .CJS – это расширение файла для модулей CommonJS, в то время как .mjs является расширением файла для модуля ECMASCRIPT. Node.js по умолчанию обработок .JS файлы как модули CommonJS. Вы можете изменить это, добавив «Тип»: «Модуль» в свой файл package.json, чтобы вы могли использовать модули Ecmascript (в ваших файлах .mjs) в среде Node.js. Это то, что Google Chrome V8 рекомендует.
Я надеюсь, что это было полезно для вас и для дальнейшего чтения, выполните проверку Модули JavaScript Анкет
Счастливого кодирования!
Оригинал: “https://dev.to/mwanjemike/how-different-is-commonjs-require-from-es6-import-hh1”