翻看去年自己记录的印象笔记,准备把笔记上的一些内容也同时更新到博客上,方便自己查看。
app.use(path,callback)中的callback既可以是router对象又可以是函数
app.get(path,callback)中的callback只能是函数
这说明,给app.get(app.post、app.put同理)赋个路由对象是不行的,其实,可以将app.get()看作app.use的特定请求(get)的简要写法。即
var express = require('express');
var app = express();
app.get('/hello',function(req,res,next){
res.send('hello test2');
});
等同于:
var express = require('express');
var app = express();
var router = express.Router();
router.get('/', function(req, res, next) {
res.send('hello world!');
});
app.use('/hello',router);
什么时用
那么,什么时用app.use,什么时用app.get呢?
路由规则是
app.use(path,router)
定义的,router
代表一个由express.Router()
创建的对象,在路由对象中可定义多个路由规则。可是如果我们的路由只有一条规则时,可直接接一个回调作为简写,也可直接使用app.get
或app.post
方法。即当一个路径有多个匹配规则时,使用app.use,否则使用相应的app.method(get、post)
总结:
app.use用来使用中间件( middleware)
2.Router
A router object is an isolated instance of middleware and routes. You can think of it as a “mini-application,” capable only of performing middleware and routing functions. Every Express application has a built-in app router.路由器对象是中间件和路由的孤立实例。 您可以将其视为“微型应用程序”,只能执行中间件和路由功能。 每个Express应用程序都有一个内置的应用程序路由器
A router behaves like middleware itself, so you can use it as an argument to app.use() or as the argument to another router’s use() method.路由器的行为就像中间件本身,因此您可以将其用作app.use()的参数或作为另一路由器的use()方法的参数。
The top-level express object has a Router() function that creates a new router object.
Create a new router as follows:
var router = express.Router([options]);