Модули nodejs и дублирование? Если в приложении используются два модуля, которым требуется общий модуль, оптимизируется ли узел, чтобы предотвратить загрузку одного и того же кода дважды?

Приносим извинения, если это глупый вопрос, но если я создам 2 модуля, которые оба требуют ('http'), и мое основное приложение, которое требует обоих модулей, или требует модулей, которые, в свою очередь, требуют обоих модулей, а также требуют 'http' для своих собственных целей я получаю три экземпляра модуля http, каждый из которых заблокирован в рамках другого закрытия, или узел переписывает что-то, чтобы избежать этого?

Другими словами, я получаю приложение который имеет:

// main app  creates a closure containing a local instance of http, an instance of proxy1
// and an instance of proxy2, both of which are functions returned from closures that have instances of http in scope
var http = require('http'),
    httpProxy1 = require('./proxy1'),
    httpProxy2 = require('./proxy2');

/* ... do stuff with http, using proxy1 or proxy2 where appropriate ... */


// proxy1 creates a closure containing a local instance of http and exposes a single public method
var http = require('http');
module.exports = function (foo) { /* ... do stuff with http ... */ }

// proxy2  creates a closure containing a local instance of http and exposes a single public method
var http = require('http');
module.exports = function (foo) { /* ... do stuff with http that has nothing to do with the stuff proxy1 does ... */ }

Если я также хочу использовать proxy1 независимо, имеет смысл использовать его как модуль, но даже в небольшом проекте это может привести ко многим модулям, которые все время требуют основных модулей, особенно http и fs

13
задан user823611 1 October 2011 в 19:15
поделиться