У меня есть путаница относительно импорта пакетов в ExpressJS с использованием require()
. Я включил некоторые пакеты, например. nodemailer
, bcryptjs
локально, то есть называть require
на них внутри функций. Итак, я должен был до require
их несколько раз в одном файле маршрута.Должен ли «require()» использоваться локально или глобально в NodeJS (ExpressJS)?
Коллега предположил, что все операторы require
должны появляться только один раз, либо в верхней части этого файла маршрута, либо в файле app.js
. Я немного смущен. Может кто-нибудь, пожалуйста, предложите лучший способ для require
пакетов внутри middlwares.
Пример: Предположим, например, Мне нужно отправить электронное письмо в функцию промежуточного программного обеспечения. У меня есть код для этого, как указано ниже:
var nodemailer = require("nodemailer");
var mailTransport = nodemailer.createTransport();
var mailOptions = {
from: constants.mail_sender_email,
to: constants.user_won_recipient_mails,
subject: templateContext.subject,
text: subject + ".\n",
html: results.html
};
Everytime Мне нужно отправить по электронной почте, я снова использовать require('nodemailer')
заявление. Должен ли я вместо этого требовать его один раз в этом файле маршрута, то есть index.js
или, возможно, в app.js
? Но тогда есть такие случаи, как require('ObjectID')
, которые не используются очень часто. Хорошо ли было бы также глобально требовать такие пакеты?
Спасибо.
Вы, скорее всего, правы, но мы не можем сказать для shure, если вы не показываете свой код. – BetaRide
[Никогда не требуйте модулей после инициализации приложения] (https://github.com/alanjames1987/Node.js-Best-Practices#never-require-modules-after-app-initialization) – str
Модули кэшированы, поэтому нет за что-то несколько раз. –