将exports对象作为CommonJS中的函数是否可以?

时间:2012-03-16 12:09:29

标签: javascript node.js commonjs

如果CommonJS模块只需要返回一个函数,那么将它直接分配给exports对象是一种好习惯吗? (而不是将其指定为exports对象的唯一属性)

例如(虚构的log.js模块):

module.exports = function(text){console.log(text);}

用法:

var log = require('./log');
log('something');

1 个答案:

答案 0 :(得分:2)

是。我经常自己使用这种做法。它也适用于揭示模块模式,例如:

module.exports = function(db) {
    return {
        get: function(id, callback) {
            // db.get(...)
        },
        save: function(obj, callback) {
            // db.save(...)
        }
    }
};

它也广泛用于连接(例如csrf module)和表达(例如route)。