【发布时间】:2016-11-04 19:04:13
【问题描述】:
我对使用 require() 在 ExpressJS 中导入包感到困惑。
我包括了一些包,例如nodemailer, bcryptjs 本地,即在函数内部对它们调用 require。所以,我不得不在一个路由文件中多次require他们。
一位同事建议所有require 语句应该只出现一次,要么在该路由文件的顶部,要么在app.js 文件中。我有点困惑。有人可以建议在中间件中require 软件包的最佳方式。
示例代码: 假设例如我需要在中间件功能中发送电子邮件。我有下面给出的代码:
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
};
每次我需要发送电子邮件时,我都会再次使用require('nodemailer') 语句。我是否应该在该路由文件(即index.js 或app.js)中要求它一次?
但也有像require('ObjectID')这样的情况,使用频率不是很高。全球也需要这样的软件包会更好吗?
谢谢。
【问题讨论】:
-
您的同事很可能是对的,但如果您不显示您的代码,我们无法确定舒尔。
-
模块被缓存,因此多次包含某些内容不会影响性能。
-
@BetaRide 添加了一些示例代码。请检查这是否有助于解释我的问题。
-
@BenFortune 是的,并且认为我在需要时在本地使用相同的要求。但正如@str 所建议的那样,有一个论点是要求所有模块一次,然后继续使用它们。这让我很困惑。
标签: javascript node.js express