Публикации - Node.js

Менеджер зависимостей npm и стандарты node - CommonJS

Что такое CommonJS? CommonJS — это система форматирования модулей. Это стандарт структурирования и организации кода JavaScript. CJS помогает в разработке приложений на стороне сервера, и его формат сильно повлиял на управление модулями NodeJS.

Итак, что такое модуль? Модуль — это просто фрагмент кода, инкапсулированный в файл и экспортированный в другой файл. Модули сосредоточены на одной части функциональности и остаются слабо связанными с другими элементами приложения. Это связано с тем, что между модулями нет глобальных или общих переменных, поскольку они взаимодействуют только через объект module.exports. Любой код, который вы хотите сделать доступным в другом файле, может быть модулем!

CommonJS оборачивает каждый модуль в функцию с именем «require» и включает объект с именем «module.exports», который экспортирует код доступности для других модулей. Все, что вам нужно сделать, это добавить все, что вы хотите сделать доступным для других файлов, в объект «экспорт» и потребовать модуль в зависимом файле. синтаксис функции require:

var VariableName = require('moduleId_or_pathToModule');

Пример:

// lib.js
const PI = 3.1415926;
// add values
function sum(...args) {
log('sum', args);
return args.reduce((num, tot) => tot + num);
}
// multiply values
function mult(...args) {
log('mult', args);
return args.reduce((num, tot) => tot * num);
}
// private logging function
function log(...msg) {
console.log(...msg);
}
module.exports = { PI, sum, mult };

Пример подключения:

const { sum, mult } = require('./lib.js');
console.log( sum(1,2,3,4) ); // 10
console.log( mult(1,2,3,4) ); // 24

или

const lib = require('./lib.js');

Пример модуля экспортирующего класс:

class MyClass {}
module.exports = MyClass;

После подключения такого класса, можем создать объект:

const
MyNewClass = require('myclass.js'),
myObj = new MyNewClass();

CommonJS позволяет динамически формировать имя файла и подгружать его, и также импортировать (import) JSON данные в JavaScript object. Пример:

const file = `data${ Math.round(Math.random() * 3) }.json`,
      data = require(file);
console.log( data.propertyOne || 'propertyOne not set' );

Асинхронные вызовы должны быть заключены в немедленно вызываемое функциональное выражение (IIFE) — функцию, которая запускается, как только она определена. Например:

function waitOneSec() {
return new Promise(
(resolve) => setTimeout(resolve, 1000));
}
(async () => {
await waitOneSec();
})();
CommonJS был стандартом для модулей Node.js до тех пор, пока не появился ES2015.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться