2017-01-12 1 views
0

私はこのパッケージmailgun-jsを使用してメールを送信します。いつ新しいオブジェクトをJavascriptで作成する必要がありますか?

const mgInstance = mailgun({ 
    apiKey: '...', 
    domain: '...', 
}); 

function sendMail1() { 
    mgInstance.messages().send(/* ... */); 
} 

function sendMail2() { 
    mgInstance.messages().send(/* ... */); 
} 

このコードは正常に動作します:まず、私は電子メールを送信するためにそれを使用し、その後mailgunの新しいインスタンスを作成する必要があり、これは私のコードのシンプルなバージョンです。私はこのような各関数内の新しいmailgunインスタンスを作成するために使用されるコードを、移動する場合、私はちょうど疑問に思う:

function sendMail1() { 
    const mgInstance = mailgun({ 
    apiKey: '...', 
    domain: '...', 
    }); 

    mgInstance.messages().send(/* ... */); 
} 

function sendMail2() { 
    const mgInstance = mailgun({ 
    apiKey: '...', 
    domain: '...', 
    }); 

    mgInstance.messages().send(/* ... */); 
} 

私の質問は次のとおりです。これらの実装の間のいずれかの違いがありますか?それらの間に優れたものがありますか?

+0

特に、郵便銃に関するコーディングパターン以上のことですか? – MaxArt

+0

APIキーとドメインが同じで、アドレスとメッセージのみが変更された場合、私は1つの機能を見ることが期待されます – mplungjan

+0

@MaxArtそれはコーディングパターンについてです – Khang

答えて

1

mailgun工場の機能が十分に軽量であることを、私はラッパー工場使用します考える:この方法で

function getMailerInstance() { 
    return mailgun({ 
    apiKey: '...', 
    domain: '...' 
    }); 
} 

function sendMail1() { 
    const mgInstance = getMailerInstance(); 

    mgInstance.messages().send(/* ... */); 
} 

を、あなたも簡単にシングルトンパターンに切り替えることができ、またはmailgunを呼び出す前に、他の計算ロジックを実行し、そうです。

MailgunのAPIを直接使用する代わりにメールを送信したり、メールを送信したり、その他の関数が呼び出す汎用のsendMail関数を作成します。したがって、メールAPIを切り替える必要がある場合は、コードの一部(つまり、getMailerInstancesendMail)を変更するだけで済みます。

さらに、コードをMailgunにバインドするgetMGInstanceではなく、汎用名getMailerInstanceを使用しています。

プラスとして、getMailerInstanceで約束を返すことを検討してください。

関連する問題