Disculpa si esta es una pregunta tonta, pero si creo 2 módulos que requieren ('http') y mi aplicación principal que requiere ambos módulos, o requiere módulos que a su vez requieren ambos módulos, mientras que también requiere 'http' para Para sus propios fines, ¿termino con tres instancias del módulo http, cada una bloqueada dentro del alcance de un cierre diferente, o el nodo reescribe cosas para evitar esto?nodejs modules and duplication? Si una aplicación utiliza dos módulos que requieren un módulo común, ¿optimiza el nodo para evitar cargar el mismo código dos veces?
En otras palabras, no termino con una aplicación que cuenta con:
// 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 ... */ }
Si también desea utilizar proxy1 forma independiente, tiene sentido tenerlo como un módulo, pero en incluso un pequeño proyecto , esto podría dar lugar a muchos módulos que requieren módulos principales repetidamente, especialmente http y fs