我對使用require()
在ExpressJS中導入包有困惑。 我包括一些軟件包,例如nodemailer
,bcryptjs
,即在其內部調用require
。所以,我不得不在require
他們多次在一個單一的路線文件。在NodeJS(ExpressJS)中,'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
[從應用程序初始化開始就不需要'模塊](https://github.com/alanjames1987/Node.js-Best-Practices#never-require-modules-after-app-initialization) – str
模塊被緩存,所以沒有通過多次包括某些東西來懲罰性能。 –