2014-07-18 3 views
0

J'essaie de déclarer globalement la variable 'calculator' afin qu'elle ne soit pas créée par requête car c'est mauvais pour la performance du code. Ma solution est de le déclarer à l'intérieur du bloc module.exports et de le passer dans la méthode qui l'utilise. Cela garantirait-il que la calculatrice ne sera pas créée par demande?Node.js: les variables de Module.exports sont-elles globales?

var awesomeModule = require(__dirname + '/../awesomeModule'); 

var calculate = module.exports = { 
     method: 'get', 
     route: '/get_calulation', 
     handler: function(request, response, next) { 
      var id = request.query.id; 
      var calculatorVersion = request.query.calculatorVersion; 
      var calculator = awesomeModule.getCalculator(calculatorVersion); 

      doCalculation(id, calculator); 

     } 
}; 

var doCalculation= calculate .doCalculation= function(id, calculator) { 
     calculator(id); 
}; 
+0

Sans rapport avec votre question, mais vous n'avez pas besoin de '__dirname'. Les chemins du module sont déjà relatifs au fichier js, pas au répertoire de travail actuel. – loganfsmyth

Répondre

2

Oui. Les fichiers que vous incluez avec require() sont chargés et exécutés une fois, puis mis en cache. Cependant, je ne m'intéresserais pas trop à la performance. Les fonctions plus petites sont analysées rapidement et pour les fonctions plus importantes, il est logique de les mettre dans des fichiers séparés de toute façon. Je me concentrerais sur la qualité du code au lieu de la performance dans ce cas.