如果CommonJS模块只需要返回一个函数,那么将它直接分配给exports对象是一种好习惯吗? (而不是将其指定为exports对象的唯一属性)
例如(虚构的log.js
模块):
module.exports = function(text){console.log(text);}
用法:
var log = require('./log');
log('something');
答案 0 :(得分:2)
是。我经常自己使用这种做法。它也适用于揭示模块模式,例如:
module.exports = function(db) {
return {
get: function(id, callback) {
// db.get(...)
},
save: function(obj, callback) {
// db.save(...)
}
}
};
它也广泛用于连接(例如csrf module)和表达(例如route)。