浅谈app.use()用法

5,474 阅读2分钟

「这是我参与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()的一些用法,当然它的用法不止于此,能力有限,怕讲不明白,这里就讲这么多啦,希望对读者有所帮助,如有不正之处,欢迎掘友们留言指正。