Настройка module.exports
позволяет вызвать функцию database_module
как функцию, когда required
. Просто установка exports
не позволяет экспортировать функцию, потому что узел экспортирует ссылки на объект module.exports
. Следующий код не позволит пользователю вызывать функцию.
Следующие действия не будут работать.
exports = nano = function database_module(cfg) {return;}
Следующее будет работать, если установлено module.exports
.
module.exports = exports = nano = function database_module(cfg) {return;}
console
var func = require('./module.js');
// the following line will **work** with module.exports
func();
В основном node.js не экспортирует объект, который в настоящий момент ссылается exports
, но экспортирует свойства того, что изначально ссылается exports
. Хотя Node.js экспортирует ссылки на объект module.exports
, что позволяет вам называть его как функцию.
Они устанавливают как module.exports
, так и exports
, чтобы гарантировать, что exports
не ссылается на предыдущий экспортируемый объект. Установив оба параметра, вы используете exports
как сокращенное название и избегаете потенциальных ошибок позже по дороге.
Использование exports.prop = true
вместо module.exports.prop = true
сохраняет символы и позволяет избежать путаницы.