express中app.get和app.use的解析

app.get(path,callback)中的callback只能是函数

app.use(path,callback)中的callback既可以是router对象又可以是函数

当其是router对象时,访问地址为path+router提供的路径

另外,app.use相当于是通用的一个方法,我们可以使用app.use替换app.get。

我们来看一个例子:

app.js

 1 var express=require('express');
 2 var app=express();
 3 var router = require( './router');
 4 
 5 //1
 6 app.use( '/test1', function(req,res,next){
 7 res.send( 'hello test1');
 8 });
 9 
10 //2
11 app.get( '/test2', function(req,res,next){
12 res.send( 'hello test2');
13 });
14 
15 //3
16 app.get( '/test3',router);
17 
18 //4
19 app.use( '/test4',router);
20 
21 app.listen(3000);

router.js

1 var express = require('express');
2 var router = express.Router();
3 
4 router.get('/', function (req, res, next) {
5     res.send('hello router');
6 });
7 module.exports = router;

当我们访问/test3时提示如下:                            /test4可以正常访问:

        

在来看看如何使用app.use替换app.get

app.js

 1 var express = require('express');
 2 var app = express();
 3 var router = express.Router();
 4 
 5 // app.get('/hello', function (req, res, next) {
 6 //     res.send('hello world');
 7 // });
 8 
 9 router.get('/', function (req, res, next) {
10     res.send('hello world!');
11 });
12 router.get('/test', function (req, res, next) {
13     res.send('hello test!');
14 });
15 //此时可以访问两个地址,即localhost:3000/hello和localhost:3000/hello/test
16 //由此可知,上面的app.get可以由该app.use替换
17 //当有多条路径时可以使用路由
18 app.use('/hello',router);
19 
20 app.listen(3000);

如上述代码所示,中间件可以访问两个地址(取决于路由的数量),其中地址localhost:3000/hello功能与上述注释块相同。

因此,当有多条路径存在时,可以使用路由。

原文地址:https://www.cnblogs.com/jfl-xx/p/7268353.html