「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍如何使用app.use()方法。
app.use()方法
使用app.use()方法将指定的中间件功能放到指定的路径下,当请求的路径地址与定义的路由相同时,就会执行指定的中间件功能。需要注意的是,如果路由有多个子路由同样也会执行对应的中间件函数。
语法:
app.use([path], callback, [callback])
参数解析:
- path : 指定的中间件函数的放的路径。可选参数。
- callback : 指定的中间件函数,可以是多个。并且这些回调函数可以调用next().
实例展示:
//创建app
app = express()
//设置中间件
app.use("/hello",(req,res,next)=>{
console.log("中间件函数");
next();
})
//设置路由
app.get('/hello',(req,res)={
console.log("中间件执行完后,执行该函数");
res.send("end");
})
来再看一个实例展示,比较下两者的区别:
//创建app
app = express()
//设置中间件
app.use("/hello",(req,res,next)=>{
console.log("中间件函数");
})
//设置路由
app.get('/hello',(req,res)={
console.log("中间件没有调用next,此函数不会被执行");
res.send("end");
})
第一个实例调用了next(),所以能执行路由函数,而第二个例子中没有调用next(),所以不会执行路由函数。
下面我们来看有路由有多个子路由的情况。
假如/hello还有子路由,
/hello/say-name
/hello/say-goodbye
我们就可以将这三个路由进行封装,暴露出一个路由接口。
const express = require('express')
const router = express.Router()
router.get("/hello",(req,res)=>{
res.send("hello")
})
router.get("/say-name",(req,res)=>{
res.send("name")
})
router.get("/say-goodbye",(req,res)=>{
res.send("goodbye")
})
module.exports = router;
使用时导入路由模块。
const router = require(./router)
const express = require('express')
const app = express()
app.use('/hello',router)
小结
使用app.use来匹配对应的路由,执行相应的中间件函数,注意区分有无next的区别,如果一个路由还含有多个子路由时,可以进行封装,暴露出一个统一的接口。
以上就是关于app.use()的一些用法,当然它的用法不止于此,能力有限,怕讲不明白,这里就讲这么多啦,希望对读者有所帮助,如有不正之处,欢迎掘友们留言指正。