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功能与上述注释块相同。
因此,当有多条路径存在时,可以使用路由。