express - Recomandare pentru crearea unui transport Nodemailer


Am o clasă de serviciu de e-mail setată pe un server Express.

Care metodă de creare a unui transport este recomandată?

class mailService {
    private transport: nodemailer.Transport;
    constructor(){
        this.transport = nodemailer.createTransport('configstring');
    }

    public sendEmail(email: string){
        //send email
    }
}

SAU

class mailService {

    public sendEmail(email: string){
        let transporter = nodemailer.createTransport('configstring');
        //send email
    }

    public sendOtherEmail(email: string){
        let transporter = nodemailer.createTransport('configstring');
        //send email
    }
}

Documentația spune „Poți reutiliza un transport de câte ori vrei după ce l-ai creat”, ceea ce mă face să cred că prima opțiune ar fi mai bună, totuși nu pot spune dacă ar exista vreo avantaj.

Ar fi o problemă de repetiție dacă am crea pur și simplu transportul de fiecare dată sau vor exista mai multe instanțe plutind în memorie, părăsite de fiecare dată când funcția sendEmail este executată?

Răspuns #1

Există puțin avantaj în utilizarea celei de-a doua metode. Ar putea fi utilă dacă doriți să schimbați configurația transportului între diferite sarcini de trimitere.

Dacă nu este cazul, se recomandă să se folosească un singur transport (prima metodă) pentru trimiterea e-mailurilor, conform principiului DRY.

De asemenea, nu ar trebui să te îngrijorezi despre memorie aici deoarece Node are un colector de gunoi și memoria va fi eliberată după ce funcția ta sendOtherEmail() se termină.