【问题标题】:Difference between express router method call and module.export method call and app.use() call in node and expressjsnode 和 expressjs 中 express 路由器方法调用和 module.export 方法调用和 app.use() 调用之间的区别
【发布时间】:2018-02-20 04:14:55
【问题描述】:

我有 app.js

var express = require('express');
var report = require('./routes/Report');

var app = express();

app.use('/api/appReport', report);

app.listen(3000);
module.exports = app;

我有 Report.js

var express = require('express');
var router = express.Router();

var reportDb = require('../db/ReportDB');

reportDb.test(function(res) {
});

router.get('/all', function(req, resp) {
    reportDb.getAll(function(result) {
        resp.status(200);
        resp.send(result);
        return resp;
    });

}); 

我有 ReportDB.js

module.exports.test = function() {
    console.log('Hello');
}

module.exports.getAll = function (callback) {
    //Some operations
};

以上代码运行良好。

我的问题是

当我启动节点 js 服务器时,它会自动调用 Report.js 中的 reportDb.test(),但不会自动调用 Report.js 中的 router.get()。 所以我想知道调用 test() 和 router.get() 有什么区别?

我知道当我们点击 '/all' url 时,它会调用 router.get()。 但是对于 reportDb.test() 我们没有在 app.js 中调用,那么它是如何在服务器启动时自动调用的呢?

假设我在 Report.js 中使用以下函数。那么它就不会执行。

function test1() {
    console.log('hello...');
}

我想知道 app.use() 会自动调用所有导出的方法吗?

【问题讨论】:

  • 你不是从 Report.js 显式调用你的 reportDB.test 函数吗?
  • 是的,我从 Report.js 中调用它。但我不是从 app.js 调用它。那么它在服务器启动时如何调用
  • 我想知道 app.use() 会自动调用所有导出的方法吗?

标签: javascript node.js express callback routes


【解决方案1】:

它调用 test() 因为你写了

    reportDb.test(function(res) {

    });

在report.js 中并在其中包含reportDb.js。您还在 app.js 中包含了 report.js。

    app.use('/api/appReport', report);

不是调用 test()

当您点击 localhost:3000/all 之类的 url 时,您的 router.get() 将调用

【讨论】:

  • 那么如果我在 Report.js 中使用function test() { console.log('hello...'); } 方法,那么它将不会执行。那我想知道有什么区别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多