app.get(path,callback)中的callback只能是函数
app.use(path,callback)中的callback既可以是router对象又可以是函数
当其是router对象时,访问地址为path+router提供的路径
另外,app.use相当于是通用的一个方法,我们可以使用app.use替换app.get。
我们来看一个例子:
app.js
var express=require('express');
var app=express();
var router = require( './router'); //
app.use( '/test1', function(req,res,next){
res.send( 'hello test1');
}); //
app.get( '/test2', function(req,res,next){
res.send( 'hello test2');
}); //
app.get( '/test3',router);
//
app.use( '/test4',router); app.listen(3000);
router.js
var express = require('express');
var router = express.Router(); router.get('/', function (req, res, next) {
res.send('hello router');
});
module.exports = router;
当我们访问/test3时提示如下: /test4可以正常访问:
在来看看如何使用app.use替换app.get
app.js
var express = require('express');
var app = express();
var router = express.Router(); // app.get('/hello', function (req, res, next) {
// res.send('hello world');
// }); 9 router.get('/', function (req, res, next) {
10 res.send('hello world!');
11 });
router.get('/test', function (req, res, next) {
res.send('hello test!');
});
//此时可以访问两个地址,即localhost:3000/hello和localhost:3000/hello/test
//由此可知,上面的app.get可以由该app.use替换
//当有多条路径时可以使用路由
app.use('/hello',router); app.listen(3000);
如上述代码所示,中间件可以访问两个地址(取决于路由的数量),其中地址localhost:3000/hello功能与上述注释块相同。
因此,当有多条路径存在时,可以使用路由。