簡體   English   中英

Node.js-庫的全局或本地初始化

[英]Nodejs - Global or local initialisation of libraries

我對以下哪種更好的做法感到困惑,為什么? 首先,我們在全局范圍內初始化庫,在第二種情況下,我們在函數內完成。

代碼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);
     }
  });
}

從風格上講,這確實是一個見解的問題。

但是從性能的角度來看,第一個代碼示例將更加高效,因為在父作用域中引用變量比通過任何節點的模塊機制都便宜,即使在第一個require()之后緩存模塊時也是如此。 require() 我還應該指出,在節點v8.x中,加載緩存模塊時的require()性能已得到顯着改善(非緩存模塊的require()也已得到略微改善)。 在撰寫本文時,您可以在該圖中看到差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM