Извиняюсь, если это глупый вопрос, но если я создаю 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