Модули Node.js

Feb 17, 2018

Экспортируем модуль

// module_nodejs.js
const sum = (a, b) => {
    return a + b;
};

module.exports = sum;

Свойство exports содержит объект, который экспортируем модуль.

Импортируем модуль

// подключаем модуль
const sum = require('../module_nodejs');

console.log('sum: ', sum(1, 2)); // sum: 3

Расширения .js, .json, .node можно опустить.

Экспортируем объект

// module_nodejs.js

const sum = (a, b) => {
    return a + b;
};

module.exports = {
    sum // используем Деструктуризацию
};
let dynSum = require('../module_nodejs').sum(1,4);
console.log('dynSum: ', dynSum);  // dynSum: 5

Или

import { sum } from '../module_nodejs.js';
console.log('sum(1, 11): ', sum(1, 11)); // sum(1, 11):  12

Мы можем сократить повтарения, так как exports - это ссылка на module.exports.

// module_nodejs.js
const sum = (a, b) => {
    return a + b;
};

exports.sum = sum;
let o = require('../module_nodejs.js');
console.log('sum(1, 11): ', o.sum(1, 11)); // sum(1, 11):  12

Особенности модулей в nodejs

Переменные объявленные в модуле недоступны при подключении.

Если модуль содержит какой-либо код, но при этом сам модуль ничего не экспортирует, то при подключении данного модуля код будет выполнен, а функция require вернет пустой объект {}.

// module_nodejs.js

console.log('info')
require('../module_nodejs.js'); // info

При подключении .json файлов ничего преобразовывать не нужно: json автоматически преобразуется в js-объект.

Подключенные модули кэшируются.

Добавить комментарий