Express中app和router路由的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haochangdi123/article/details/81480212

1.app

app对象通常表示Express应用程序

var express = require('express');
var app = express();

具体的使用我应该不用多说了,不知道的同学可以看我以前的文档或者看官网http://www.expressjs.com.cn/4x/api.html#express

2.Router

目的 :
router目的是中间件和路由的分离的实例。
可以将其视为“迷你应用程序”,只能执行中间件和路由功能。每个Express应用程序都有一个内置的应用程序路由器。

顶级express对象具有Router()创建新router对象的功能。

var router = express.Router([options]);

可选options参数指定路由器的行为。

属性 描述 默认
caseSensitive 启用区分大小写。 默认情况下禁用,将“/ Foo”和“/ foo”视为相同。
mergeParams 保留req.params父路由器的值。如果父项和子项具有冲突的参数名称,则子项的值优先。 false
strict 启用严格路由。 默认情况下禁用,“/ foo”和“/ foo /”由路由器处理相同。

其实我们可以将router视为一个路由分支,因此router是有中间件和HTTP方法路由(如get,put,post,等),router就像一个应用程序。

最后我们通过app去做统一的调用管理,以实现中间件和路由的分离。
main.js

var express = require('express'),
    a    = require('./routes/a'),
    b    = require('./routes/b');

var app = express();

app.use('/a',  a);
app.use('/b',  b);

app.listen(3000);

a.js

var express = require('express');

var router = express.Router();

router.get('/', function(req, res) {
    res.send('this is aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
});

module.exports = router;

b.js

var express = require('express');

var router = express.Router();

router.get('/', function(req, res) {
    res.send('this is bbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
});

module.exports = router;

main.js中引入a.jsb.js,这样一样可以对/a/b路径下的router进行统一的配置,可以便于管理,而不会相互影响

猜你喜欢

转载自blog.csdn.net/haochangdi123/article/details/81480212