(我知道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)”。
那是什么意思? 如果您帮助我,我将不胜感激。ㅠㅠ
答案 0 :(得分:1)
它从该文件导入路由器。路由器要求您传递2个参数-app和fs。与调用常规函数相同。就在这里,它是导入路由并在一处调用函数。
答案 1 :(得分:1)
这意味着./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
参数是将应用程序实例传递到路由器的常见Express配方,而无需传递fs
。 fs
模块可以直接导入./router/main
模块中,它从依赖注入中受益不大。