我有点困惑,以下哪个是更好的做法,为什么?在第一种情况下,我们在全局范围内初始化库,在第二种情况下,它在函数内完成。
代码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 :(得分:0)
在风格上,这确实是一个意见问题。
但是从性能的角度来看,第一个代码示例将更有效,因为引用父作用域中的变量比通过任何节点的模块机制更便宜,即使模块在高速缓存之后被高速缓存也是如此。第一个require()
。我还应该指出,在节点v8.x中,加载缓存模块时的require()
性能显着提高(对于非缓存模块,require()
也提高了略微 )。在撰写本文时,您可以在this graph中看到差异。