Nodejs - 库的全局或本地初始化

时间:2017-06-04 03:50:35

标签: javascript node.js

我有点困惑,以下哪个是更好的做法,为什么?在第一种情况下,我们在全局范围内初始化库,在第二种情况下,它在函数内完成。

代码1

var twilio_client = require('twilio')(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN
);

function_sendSMS(from, to){
   twilio_client.messages.create({
     from: from,
     to: to,
     body: "You just sent an SMS from Node.js using Twilio!"
     }, function(err, message) {
     if(err) {
      console.error(err.message);
     }
  });
}

代码2

function_sendSMS(from, to){

   var twilio_client = require('twilio')(
     process.env.TWILIO_ACCOUNT_SID,
     process.env.TWILIO_AUTH_TOKEN
   );

   twilio_client.messages.create({
     from: from,
     to: to,
     body: "You just sent an SMS from Node.js using Twilio!"
     }, function(err, message) {
     if(err) {
      console.error(err.message);
     }
  });
}

1 个答案:

答案 0 :(得分:0)

在风格上,这确实是一个意见问题。

但是从性能的角度来看,第一个代码示例将更有效,因为引用父作用域中的变量比通过任何节点的模块机制更便宜,即使模块在高速缓存之后被高速缓存也是如此。第一个require()。我还应该指出,在节点v8.x中,加载缓存模块时的require()性能显着提高(对于非缓存模块,require()也提高了略微 )。在撰写本文时,您可以在this graph中看到差异。