我使用此包mailgun-js发送电子邮件。首先,我需要创建一个mailgun
的新实例,然后使用它来发送电子邮件,这是我的代码的简单版本:
const mgInstance = mailgun({
apiKey: '...',
domain: '...',
});
function sendMail1() {
mgInstance.messages().send(/* ... */);
}
function sendMail2() {
mgInstance.messages().send(/* ... */);
}
此代码工作正常。我只是想知道是否在每个函数中移动用于创建新mailgun
实例的代码,如下所示:
function sendMail1() {
const mgInstance = mailgun({
apiKey: '...',
domain: '...',
});
mgInstance.messages().send(/* ... */);
}
function sendMail2() {
const mgInstance = mailgun({
apiKey: '...',
domain: '...',
});
mgInstance.messages().send(/* ... */);
}
我的问题是:这些实施之间有什么不同吗?他们之间有更好的一个吗?
答案 0 :(得分:1)
鉴于mailgun
工厂函数足够轻,我会使用包装工厂:
function getMailerInstance() {
return mailgun({
apiKey: '...',
domain: '...'
});
}
function sendMail1() {
const mgInstance = getMailerInstance();
mgInstance.messages().send(/* ... */);
}
这样,您也可以在调用mailgun
之前轻松切换到单例模式或执行其他计算逻辑,等等。
我还会创建一个通用sendMail
函数来处理......好吧,发送邮件,让其他函数调用它,而不是直接使用Mailgun的API。因此,如果您需要切换邮件API,则只需更改代码的一小部分(即getMailerInstance
和sendMail
)。
另请注意我是如何使用通用名称getMailerInstance
代替getMGInstance
的,它将您的代码绑定到Mailgun。
另外,请考虑在getMailerInstance
中返回承诺。