我有这个文件夹结构。
def save(self, *args, **kwargs):
#self.date_created = timezone.now()
# YOUR LOGIC HERE
super(YOUR_OVERRIDING_MODEL , self).save(*args, **kwargs
在路线文件夹中,我有一堆js文件。所有这些文件都需要像这样的护照js包
/app.js
/src
/routes
/controllers
我可以将软件包打包放在一个地方(大多数可能在app.js中),而不是通过这种方式将其传递给routes文件夹中的每个文件,而不是在每个文件上都需要它。
答案 0 :(得分:3)
可能存在特定于通行证/快递的解决方案(例如,将通行证作为中间件安装一次),但通常会回答有关模块的问题:
在使用该模块的模块中要求一个模块是标准做法,可以清楚地表达模块之间的依赖关系,因此通常不必避免这样做。
我可以将软件包打包放在一个地方(大多数可能在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
一样,因此您在其上创建的任何属性都将成为全局变量。)
我不建议这样做,因为这样就不再明确定义模块之间的依赖关系。
答案 1 :(得分:1)
无论您多久require()
一个模块,它都只会被加载一次。在多个文件中需要一个模块没有错,实际上,这基本上就是模块系统设计为工作的方式。
答案 2 :(得分:0)
如果routes文件夹中的文件未使用快速路由器,您可以选择导出导出接受护照和应用程序对象的功能,例如
module.exports = function(app, passport) {
app.get('/', (req, res) => {
res.json('some route');
});
}
然后您将只需要在app.js / server.js中使用一次护照并将同一对象传递到每条路线