express中app和router的區別

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

以上兩者的區別是什麼,何時用哪一個最合適?web

區別看下面的例子:express

app.jsapp

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.jspost

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對象。ui

app對象能夠看做建立了一個Express應用程序,app的做用是作一些全局的處理spa

router是開發人員作業務處理的利器(好比你能夠經過router去use你本身寫的針對某個特定路由的中間件),這樣的好處能夠更細的劃分controller,router就是一個mini的app。router能夠更細的劃分controller。code

「迷你應用程序」背後的想法是,應用程序中的不一樣路線可能變得至關複雜,你能夠從將該邏輯移動到單獨的文件中獲益。router

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

如今,你能夠獨立地處理對 /dog 的任何請求的邏輯,而不用擔憂它將如何影響貓 /birds。對象

若是你具備與全部三條路由相關的邏輯(Express 中稱爲中間件),則能夠將其放在 app.use(...) 調用上方的 app.js 中。

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

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

若是代碼很是簡單,徹底能夠 app.get('/',....),若是路由比較複雜,使用 express.Router() 更合適。

相關文章
相關標籤/搜索