express中app和router的區別


 
var app = express(); 
var router = express.Router();

以上二者的區別是什么,什么時候用哪個最合適?

區別看下面的例子:

app.js

var express = require('express'),
    dogs    = require('./routes/dogs'),
    cats    = require('./routes/cats'),
    birds   = require('./routes/birds');

var app = express();

app.use('/dogs',  dogs);
app.use('/cats',  cats);
app.use('/birds', birds);

app.listen(3000);

dogs.js

var express = require('express');

var router = express.Router();

router.get('/', function(req, res) {
    res.send('GET handler for /dogs route.');
});

router.post('/', function(req, res) {
    res.send('POST handler for /dogs route.');
});

module.exports = router;

在app.js 中調用 express() 時,返回一個app對象。

app對象可以看作創建了一個Express應用程序,app的作用是做一些全局的處理

router是開發人員做業務處理的利器(比如你可以通過router去use你自己寫的針對某個特定路由的中間件),這樣的好處可以更細的划分controller,router就是一個mini的app。router可以更細的划分controller。

“迷你應用程序”背后的想法是,應用程序中的不同路線可能變得相當復雜,你可以從將該邏輯移動到單獨的文件中獲益。

在上面這個簡單的例子中,/dogs 路由的邏輯已經被移動到自己的文件中,所以它的 GET 和 POST 處理程序不會混亂 app.js。

現在,你可以獨立地處理對 /dog 的任何請求的邏輯,而不用擔心它將如何影響貓 /birds。

如果你具有與所有三條路由相關的邏輯(Express 中稱為中間件),則可以將其放在 app.use(...) 調用上方的 app.js 中。

如果你有邏輯僅與其中一條路線(/dog)相關,那么你只將它放在該路由的文件中。

至於什么時候使用,其實上面的例子已經解釋了。

如果代碼非常簡單,完全可以 app.get('/',....),如果路由比較復雜,使用 express.Router() 更合適。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM