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() 更合适。

相关文章
相关标签/搜索