首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"var router = require('./router/main')(app)“是什么意思?

"var router = require('./router/main')(app)“是什么意思?
EN

Stack Overflow用户
提问于 2018-12-16 20:07:56
回答 2查看 78关注 0票数 1

(我知道在stackoverflow中也有类似的问题,但我不能理解该问题的注释。)

我是韩国初中生。所以我的英语不是很好,但是请帮助我。

我正在通过示例代码学习Node.js和Express.js。这是我正在查看的示例代码。

代码语言:javascript
复制
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)“。

那是什么意思??如果你能帮助我,我将不胜感激。ㅠㅠ

EN

回答 2

Stack Overflow用户

发布于 2018-12-16 20:11:49

它会从该文件导入路由器。路由器要求您传递两个参数- app和fs。这与调用常规函数相同。就在这里,它正在导入路由并在一个地方调用函数。

票数 1
EN

Stack Overflow用户

发布于 2018-12-16 20:21:17

这意味着./router/main模块导出接受应用程序实例和fs模块作为参数的factory function,并返回依赖于这些参数的路由器实例,例如:

代码语言:javascript
复制
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模块中,它不会从依赖注入中获得太多好处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53801957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档