gpt4 book ai didi

javascript - 'require()' 应该在 NodeJS (ExpressJS) 中本地使用还是全局使用?

转载 作者:行者123 更新时间:2023-12-03 05:43:33 25 4
gpt4 key购买 nike

我对使用 require() 在 ExpressJS 中导入包感到困惑。我包括了一些包,例如本地 nodemailerbcryptjs,即在函数内部调用 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') 这样的情况,使用频率并不高。全局范围内都需要这样的包会好吗?

谢谢。

最佳答案

require('requiredFile/requiredModule');返回文件的上下文并公开从 requiredFile 或 requiredModule 导出的模块。

如果你想在全局级别使用该模块,需要在app.use()中调用它,这样你就可以在每次处理请求时使用它。

但是,如果您想在本地对特定文件使用它,则需要将其放在文件顶部并将其缓存在变量中,然后在整个文件中使用该变量(类似于您在示例代码中编写的内容) )

关于javascript - 'require()' 应该在 NodeJS (ExpressJS) 中本地使用还是全局使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40420540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com