Express中间件的分类

56 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

“金秋十月,我要连续30天更文,做劳模,拿手机摄影神器!点击查看活动详情 “即可成功参与

应用级别的中间件

通过app.use()或app.get()或app.pst(),绑定到app实力上,叫做应用级别的中间件

只要这个中间件最终绑定到app这个实例上了,那就是应用级别中间件
app.use((req,res,next)={//应用级别的中间件(全局中间件)
    next()
})
    
app.get('/user',fn,(req,res)=>{//应用级别的中间件(局部中间件)
 res.send("hahha")
})

路由级别的中间件

绑定到express.Router()实例上的中间件,叫做路由级别的中间件(应用级别绑定到app实例上,路由级别绑定到router实例上)

const  app=express()
const router=expresss.Router()//路由实例
​
router.use((req,res,next)=>{ //路由级别的中间件
    console.log("222")
    next()
})
​

错误级别的中间件

作用:专门来捕获整个项目中发生的异常错误,从而防止项目异常崩溃的问题

格式:错误级别中间件的function处理函数中,必须有4个参数,分别是(err,req,res,next)

app.get('/',(req,res)={                     1、路由
    throw nex Error("服务器内部发生错误")     2、抛出一个自定义错误    
     res.send("haha")
})
​
app.use((err,req,res,next)=>{               3、错误级别的中间件
    console.log("发生了错误"+err.message)    4、在服务器上打印错误
    res.send("eroor"+err.message)           5、向客户端响应错误相关的内容
})

express 内置的中间件

app.use(express.static('文件名')) //快速托管静态资源的内置中间件
app.use(express.json())//解析json格式的请求体数据(application/json)
app.use(express.unlencoded({extended:false}))//解析URL-encoded格式的请求体数据(application/x-www-forom-urlencoded)
​
如果不解析客户端发送过来的数据,res.body则为undefined
如果解析了客户端发送过来的数据,res.body则显示该格式的数据

托管静态资源中间件

通过express.static()方法,可以非常方便的创建一个静态资源服务器

app.user(express.static('文件名1')) //可以直接访问这个文件里的所有资源,并且这个文件夹名不会出现在访问的路径和中了
app.user(express.static('文件名2'))//想要托管多个文件夹,多次调用这个函数即可,根据添加顺序查找需要的文件
​
eg:这个public文件夹下的内容对外开放访问
app.user(express.static('public'))// 这个文件夹里存放了css文件、JavaScript文件
http://localhost:3006/css/style.css
http://localhost:3006/JavaScript/index.js

Express在指定的静态目录中查找文件,并对外提供资源的访问路径,因此,存放静态文件的目录名不会出现在URL中

挂载路径访问前缀

如果希望在托管的静态资源访问路径之前,挂载路径前缀,可以使用如下方法

app.user('文件名',express.static('文件名')) //可以直接访问这个文件里的所有资源,路径中也会显示这个文件名
​
​
eg:这个public文件夹下的内容对外开放访问
app.user(public,express.static('public'))// 这个文件夹里存放了css文件、JavaScript文件
http://localhost:3006/public/css/style.css
http://localhost:3006/public/JavaScript/index.js

第三方的中间件

由第三方开发出来的中间件,使用前需要下载第三方中间件