2015-06-15 3 views
1

Мне интересно, что они требуют строк в NodeJs.Что означает эта строка в NodeJs?

var debug = require('debug')('morgan') 
var deprecate = require('depd')('morgan') 

Я иду через пакет index.js из morgan в NodeJs. Обычно require имеет только один параметр (пакет).

+0

Обратите внимание, что 'требуют()' еще только принимающую один аргумент - '«debug'' и '» depd'', соответственно. Возвращаемое значение немедленно вызывается с другой через вторую пару скобок - «morgan». –

ответ

2

require возвращает то, что когда-либо было определено в упаковке. В приведенных выше случаях они являются функциями, поэтому параметр второй фактически вызывает функцию. Если вы его сломаете, это будет выглядеть так:

var debugFunctionFactory = require('debug'); 
var debug = debugFunctionFactory('morgan'); 
debug('this is a test debug command'); 

Реализация очень проста, если рассматриваемый модуль возвращает функцию. И в случае отладки и принизить возвращает функцию, которая возвращает функцию:

// Module code: 
module.export = function(customName) { 
    return function(message) { 
    console.log(customName + ': ' + message); 
    }; 
}; 

// Your code: 
var foo = require('module'); // => function 
var bar = foo('foobar');  // => function 
bar('baz');     // "foobar: baz" 

// More concisely: 
var foo = require('module')('foobar'); // => function 
foo('baz');        // "foobar: baz"