2016-12-17 73 views
0

我在節點上很新,想要學習最佳實踐,編寫一個聊天機器人,並且有很多重用的功能和變量,所以它很有意義(至少我)使用全局變量來避免一遍又一遍地重寫相同的東西。Node.js Globals!糟糕,醜陋&性能

爲了避免全局變量的一些問題,我創建了一個名爲... globals.js的文件,它包含所有全局變量,如果它們全部在一個地方,則不太容易出錯。

//globals.js 
const Settings = require('./settings.js) // DB Model 

... 

// A few variables 
global.foo = bar; 
... 
// I expect to have about 10-20 functions 
global.baz = function(foo,bar) { 
... 
} 

// Prepare and Load Settings 
Settings.find(
    function(err, result) { 
     if (err) { 
      console.log('Unable to load settings: ' + err); 
      process.exit(1); 
     } else { 
      for (let key in result[0].toObject()) { 
       // All settings will be available globbaly 
       global[key] = result[0][key]; 
      } 
     } 
    } 
); 

這些設置都必須適用於整個項目爲不同的文件會用他們大多和我期望有超過50個可配置的設置,這是至少50個全局。這是一個壞主意,我應該爲每個使用它們的文件加載設置,而不是將它們加載爲全局變量?

有這麼多全局或更多影響性能,有沒有更好的方法來實現我正在嘗試?

感謝您抽出寶貴時間閱讀本文,我們將不勝感激。

回答

3

您可以將所有常量保存在單個文件中,達到與您的全局變量相同的結果,再加上您將確保這些常量不會泄漏到其他地方。

常數可能只是一個標準的文件,可以說constants.js

module.exports = { 
    VALUE1: 1, 
    VALUE2: 2 //etc 
} 

無處不在其他地方的需要,你只需要這個文件:

const constants = require('./constants.js) 
let neededHere = constants.VALUE1