Что означает «var router = require ('./ router / main') (app)»? - PullRequest
0 голосов
/ 16 декабря 2018

(я знаю, что в 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)" в последней строке.

Чтоэто значит ??Я буду признателен за вашу доброту, если вы мне поможете .. 101

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Это означает, что ./router/main модуль экспортирует фабричную функцию , которая принимает экземпляр приложения и fs модуль в качестве параметров и возвращает экземпляр маршрутизатора, который зависит от этих параметров, например:

var express = require('express');

module.exports = (app, fs) => {
  var router = express.Router();
  // define router routes that make use of `app` and `fs`
  return router;
};

Таким образом, фабричная функция маршрутизатора в основном реализует шаблон внедрения зависимостей .

app параметр - это обычный рецепт Express для передачи экземпляра приложения на маршрутизатор, в то время как передача fs не требуется.Модуль fs может быть импортирован непосредственно в модуль ./router/main, от внедрения зависимостей он не сильно выигрывает.

0 голосов
/ 16 декабря 2018

Импортирует роутер из этого файла.Роутер требует от вас передать 2 параметра - приложение и фс.Это так же, как вызов обычной функции.Просто здесь он импортирует маршрут и вызывает функцию в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...