Можно ли сделать объект экспорта функцией в CommonJS? - PullRequest
0 голосов
/ 16 марта 2012

В случае, когда модулю CommonJS нужно возвращать только одну функцию, рекомендуется ли назначать ее непосредственно объекту экспорта?(в отличие от назначения его в качестве единственного атрибута объекта экспорта)

Например (мнимый log.js модуль):

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

использование:

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

1 Ответ

2 голосов
/ 16 марта 2012

Да. Я часто использую эту практику сам. Это также хорошо согласуется с шаблоном модуля, например ::1001*

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

Он также широко используется в соединениях (например, модуль csrf ) и экспрессе (например, route ).

...