簡體   English   中英

節點和expressjs中快速路由器方法調用和module.export方法調用和app.use()調用之間的區別

[英]Difference between express router method call and module.export method call and app.use() call in node and expressjs

我有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()是自動調用導出的所有方法嗎?

它調用test()是因為您已經編寫了

    reportDb.test(function(res) {

    });

在report.js中,並在其中包含reportDb.js。 另外,您還將report.js包含在app.js中。

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

它不是那個調用test()

當您按localhost:3000 / all之類的網址時,您的router.get()將調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM