![](/img/trans.png)
[英]How to make npm package available as a command to electron application
[英]Nodejs expressjs make npm package available throughout the project
我有這個文件夾結構。
/app.js
/src
/routes
/controllers
在路線文件夾中,我有一堆js文件。 所有這些文件都需要像這樣的護照js包
const passport = require('passport');
除了執行此操作外,我是否可以將程序包放在一個位置(大多數可能在app.js中),然后以某種方式將其傳遞到routes文件夾中的每個文件,而不是在每個文件中都需要它。
可能存在特定於通行證/快遞的解決方案(例如,將通行證作為中間件安裝一次),但通常會回答有關模塊的問題:
在使用該模塊的模塊中要求模塊是一種標准做法,可以清楚地表達模塊之間的依賴關系,因此通常不必避免這樣做。
除了執行此操作外,我是否可以將程序包放在一個位置(大多數可能在app.js中),然后以某種方式將其傳遞到routes文件夾中的每個文件,而不是在每個文件中都需要它。
您有兩種選擇:
如果所有這些文件還都具有其他導入功能,則可以創建一個需要所有這些內容的匯總模塊,然后將其用作導出。 然后您的文件將執行以下操作:
const {passport, anotherThing, yetAnotherThing} = require("./the-rollup-module");
代替
const passport = require("passport"); const anotherThing = require("another-thing"); const yetAnotherThing = require("yet-another-thing");
匯總看起來像這樣:
module.exports.passport = require("passport"); module.exports.anotherThing = require("another-thing"); module.exports.yetAnotherThing = require("yet-another-thing");
(我不建議這樣做。)可以通過將其放入輸入腳本中來使其成為全局變量:
global.passport = require("passport");
暴露passport
作為一個全局變量,所以你的模塊可以只使用passport
而不require
荷蘭國際集團它。 (默認的global
變量是對全局對象的引用,就像瀏覽器上的window
一樣,因此您在其上創建的任何屬性都將成為全局變量。)
我不建議這樣做,因為這樣就不再明確定義模塊之間的依賴關系。
無論您require()
一個模塊,它都只會被加載一次。 在多個文件中需要一個模塊沒有錯,實際上,這基本上是模塊系統設計為工作的方式。
如果路由文件夾中的文件未使用快速路由器,您可以選擇導出導出接受護照和應用程序對象的功能,例如
module.exports = function(app, passport) {
app.get('/', (req, res) => {
res.json('some route');
});
}
然后,您只需要在app.js / server.js中一次使用護照,並將同一對象傳遞到每條路線
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.