108 votes

Comprendre les modules Node.js : plusieurs requêtes renvoient le même objet ?

J'ai une question concernant la documentation de node.js sur la mise en cache des modules :

Les modules sont mis en cache après leur premier chargement. Cela signifie que (entre autres) que chaque exactement le même objet s'il s'agit d'un retour, s'il s'agit d'un retour. fichier.

Plusieurs appels à require('foo') ne peut pas être à l'origine t exécuté plusieurs fois. Il s'agit d'une caractéristique importante. Grâce à elle, le code du module peut être exécuté plusieurs fois, des objets "partiellement réalisés" peuvent être renvoyés, ce qui permet une transitives d'être chargées même lorsqu'elles provoqueraient des cycles.

Qu'entend-on par may ?

Je veux savoir si l'exigence sera siempre renvoient le même objet. Ainsi, si j'ai besoin d'un module A en app.js et modifier l'objet d'exportation dans app.js (celui qui nécessite des retours) et ensuite un module B en app.js qui nécessite elle-même un module A , le ferais-je ? siempre obtenir la version modifiée de cet objet ou un nouvel objet ?

// app.js

var a = require('./a');
a.b = 2;
console.log(a.b); //2

var b = require('./b');
console.log(b.b); //2

// a.js

exports.a = 1;

// b.js

module.exports = require('./a');

0voto

user2030657 Points 11

Essayer drex : https://github.com/yuryb/drex

drex surveille un module pour mise à jour après la mise à jour. Le nouveau code est requis()d comme s'il s'agissait d'un module comme si le nouveau code était un module totalement différent, donc require.cache n'est pas un problème.

0voto

Amir Forsati Points 1441

Lorsque vous demandez un objet, vous demandez son adresse de référence, et en demandant l'objet deux fois, vous obtiendrez la même adresse ! Avoir des copies d'un même objet, Vous devez le copier (cloner).

var obj = require('./obj');

a = JSON.parse(JSON.stringify(obj));
b = JSON.parse(JSON.stringify(obj));
c = JSON.parse(JSON.stringify(obj));

Le clonage se fait de plusieurs manières, vous pouvez voir cette pour plus d'informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X