2017-06-04 91 views
0

我對下面哪一個更好的做法感到困惑,爲什麼?首先,我們在全球初始化圖書館,在第二種情況下,它在一個函數內完成。Nodejs - 庫的全局或本地初始化

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

回答

0

文體這真是見仁見智。

但是從性能的角度來看,第一個代碼示例會更有效率,因爲引用父範圍中的變量比通過任何節點的模塊機器更便宜,即使在模塊被緩存後第一個require()。我還應該指出,在節點v8.x中,加載高速緩存模塊時的性能有顯着提高(對於非高速緩存模塊require()也改善了以及)。截至撰寫本文時,您可以看到this graph的區別。

+0

是第一種情況,該模塊將永遠加載,所以不會消耗更多的內存/資源? –

+0

它沒有使用任何額外的內存,因爲它是*節點的模塊緩存中已有的同一個對象的引用。 – mscdex

+0

好的。謝謝。得到它了。 –