(我知道在stackoverflow中也有类似的问题,但我不能理解该问题的注释。)
我是韩国初中生。所以我的英语不是很好,但是请帮助我。
我正在通过示例代码学习Node.js和Express.js。这是我正在查看的示例代码。
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var session = require("express-session");
var fs = require("fs");
app.set("views", __dirname + "/views");
app.set("view engine", "ejs");
app.engine("html", require("ejs").renderFile);
var server = app.listen(3000, function() {
console.log("Express server has started on port 3000");
});
app.use(express.static("public"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(session({
secret: '@@SEC$$RET##',
resave: false,
saveUninitialized: true
}));
var router = require("./router/main")(app, fs)我已经理解了这段代码的大部分,但我不能理解最后一行的"(app,fs)“。
那是什么意思??如果你能帮助我,我将不胜感激。ㅠㅠ
发布于 2018-12-16 20:11:49
它会从该文件导入路由器。路由器要求您传递两个参数- app和fs。这与调用常规函数相同。就在这里,它正在导入路由并在一个地方调用函数。
发布于 2018-12-16 20:21:17
这意味着./router/main模块导出接受应用程序实例和fs模块作为参数的factory function,并返回依赖于这些参数的路由器实例,例如:
var express = require('express');
module.exports = (app, fs) => {
var router = express.Router();
// define router routes that make use of `app` and `fs`
return router;
};这样,路由器工厂功能基本上实现了dependency injection模式。
app参数是将应用程序实例传递给路由器的常用方法,而传递fs则不是必需的。fs模块可以直接导入到./router/main模块中,它不会从依赖注入中获得太多好处。
https://stackoverflow.com/questions/53801957
复制相似问题