前面的中间件以get路由为例,下面讲解app.use和常规get作为中间件的不同之处!
app.use()也是一个中间件。与get、post不同的是,他的网址不是精确匹配的。而是能够有小文件夹拓展的。
比如网址: http://127.0.0.1:3000/admin/aa/bb/cc/dd
1 app.use("/admin",function(req,res){
2 res.write(req.originalUrl + "\n"); // /admin/aa/bb/cc/dd
3 res.write(req.baseUrl + "\n"); // /admin
4 res.write(req.path + "\n"); // /aa/bb/cc/dd
5 res.end("你好");
6 });
如果写一个/
1 //当你不写路径的时候,实际上就相当于"/",就是所有网址
2 app.use(function(req,res,next){
3 console.log(new Date());
4 next();
5 });
app.use()就给了我们增加一些特定功能的便利场所。
实际上app.use()的东西,基本上都从第三方能得到。
var express=require("express");
var app=express();
//静态服务
//在指定路由/jingtai/呈递www目录下静态服务
app.use("/jingtai/",express.static("./www"));
//新的路由
app.get("/css",function(req,res){
res.send("这仅仅是一个路由"+"<hr />")
})
app.listen(3000)
一般我们不使用use作为中间件,当然我们不如使用制度功能比如上述例子,进行使用静态web服务时候,前面调取的路径可以呈递静态服务的存放目录!根据适合的应用场景采取不同的方案!app.use的中间件和post,get的不同之处在于use的模糊匹配,只要路径前面(req.baseUrl)匹配成功,后面的随意输入不影响!匹配(/haha),在req.url任意追加到(/haha)后面随意传递都不影响!