estoy empezando a construir mi proyecto en NodeJS y me preguntaba¿NodeJS reutiliza módulos ya cargados y comparte sus valores?
módulos- ¿El NodeJS ya cargado para su reutilización módulos que requieren el mismo módulo?
- ¿Los módulos mantienen el mismo "estado" entre los módulos que los requieren?
- ¿Cuál es la trampa si sucede una o ambas cosas? Estoy mirando a la cara un problema similar a loops y
setTimeout
y async código?
Actualmente he probado con 4 archivos
common.js
var i = 0; function add(v){i += v;} function view(){console.log(i);} module.exports = { add : add, view : view }
a.js
yb.js
exports.common = require('./common.js');
server.js
var a = require('./a.js'), b = require('./b.js'); function start(){ http.createServer(function (req, res) { a.common.add(2); a.common.view(); b.common.add(4); b.common.view(); a.common.view(); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(config.port, config.address || '127.0.0.1'); console.log('Server running'); }
El resultado me da un resultado sugerente que lo hace:
2 - view() via a.js on favicon request
6 - view() via b.js on favicon request
6 - view() via a.js on favicon request
8 - view() via a.js
12 - view() via b.js
12 - view() via a.js
Parece que no parecen compartir el módulo incluso si es requerido por dos separados módulos, e incluso mantiene el estado en todos los módulos y en las solicitudes
¿De dónde vienen 'foo' y' bar'? – Amberlamps
@Amberlamps editado. Usé 'foo' y' bar' en mi código. – Joseph
sí, los módulos cargados están en caché, su estado es. –