最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nodejs之Express中間件的分類介紹

 更新時(shí)間:2022年12月03日 14:02:41   作者:Hydrion-Qlz  
這篇文章主要介紹了Nodejs之Express中間件的分類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

中間件的分類

為了方便大家理解和記憶中間件的使用,Express官方把常見的中間件用法,分成了5大類

分別是

  • 應(yīng)用級(jí)別的中間件
  • 路由級(jí)別的中間件
  • 錯(cuò)誤級(jí)別的中間件
  • Express內(nèi)置的中間件
  • 第三方的中間件

1 應(yīng)用級(jí)別的中間件

通過(guò)app.use()或app.get()或app.post(),綁定到app實(shí)例上的中間件,叫做應(yīng)用級(jí)別的中間件,代碼示例如下:

只要是直接通過(guò)app.xxx調(diào)用的,都可以理解為是應(yīng)用級(jí)別的中間件

// 應(yīng)用級(jí)別的中間件(全局中間件)
app.use((req, res, next) => {
? ? console.log("這是中間件函數(shù)")
? ? next()
})

// 應(yīng)用級(jí)別的中間件(局部中間件)
app.get("/user", mw, (req, res) => {
? ? res.send('success')
})

2 路由級(jí)別的中間件

綁定到express.Router()實(shí)例上的中間件,叫做路由級(jí)別的中間件。

它的用法和應(yīng)用級(jí)別中間件沒有任何區(qū)別。

只不過(guò),應(yīng)用級(jí)別中間件是綁定到app實(shí)例上,路由級(jí)別中間件綁定到router實(shí)例上,代碼示例如下:

const express = require("express")
const router = express.Router()

// 路由級(jí)別的中間件
router.use((req, res, next) => {
? ? console.log("Time: ", Date.now())
? ? next()
})

module.exports = router

3 錯(cuò)誤級(jí)別的中間件

錯(cuò)誤級(jí)別中間件的作用:專門用來(lái)捕獲整個(gè)項(xiàng)目中發(fā)生的異常錯(cuò)誤,從而防止項(xiàng)目異常崩潰的問(wèn)題。

格式:錯(cuò)誤級(jí)別中間件的function處理函數(shù)中,必須有4個(gè)形參,形參順序從前到后,分別是(err, req, res, next)。

// 路由
app.get("/user", (req, res) => {
? ? throw new Error("服務(wù)器內(nèi)部發(fā)生了錯(cuò)誤!")
? ? res.send("Home Page")
})

// 錯(cuò)誤級(jí)別的中間件,捕獲整個(gè)項(xiàng)目的異常錯(cuò)誤
app.use((err, req, res, next) => {
? ? console.log("Error: " + err.message)
? ? res.send("Error: " + err.message)
})

錯(cuò)誤級(jí)別的中間件,必須注冊(cè)在所有路由之后,如果放在前面會(huì)導(dǎo)致在該中間件之后的錯(cuò)誤無(wú)法被捕獲

4 Express內(nèi)置的中間件

自Express4.16.0版本開始,Express內(nèi)置了3個(gè)常用的中間件,極大的提高了Express項(xiàng)目的開發(fā)效率和體驗(yàn):

  • express.static快速托管靜態(tài)資源的內(nèi)置中間件,例如:HTML文件、圖片、CSS樣式等(無(wú)兼容性)
  • express.json解析SON格式的請(qǐng)求體數(shù)據(jù)(有兼容性,僅在4.16.0+版本中可用)
  • express.urlencoded解析URL-encoded格式的請(qǐng)求體數(shù)據(jù)(有兼容性,僅在4.16.0+版本中可用)
// 配置解析 application/json 格式數(shù)據(jù)的內(nèi)置中間件
app.use(express.json())

// 配置解析 application/x-www-form-urlencoded 格式數(shù)據(jù)的內(nèi)置中間件
app.use(express.urlencoded({ extended: false }))

app.post('/user', (req, res)=>{
?? ?// 在服務(wù)器, 可以使用 req.body 這個(gè)屬性,來(lái)接受客戶端端發(fā)過(guò)來(lái)的請(qǐng)求體數(shù)據(jù)
? ? // 在默認(rèn)情況下,如果把配置解析表單數(shù)據(jù)的中間價(jià), 則 req.body 默認(rèn)等于 undefined
? ? console.log(req.body)
? ? res.send('ok')
})

除了錯(cuò)誤級(jí)別的中間件,其他的中間件,必須在路由之前進(jìn)行配置

5 第三方中間件

非Express官方內(nèi)置的,而是由第三方開發(fā)出來(lái)的中間件,叫做第三方中間件。在項(xiàng)目中,大家可以按需下載并配置第三方中間件,從而提高項(xiàng)目的開發(fā)效率。

例如:在express@4.16.0之前的版本中,經(jīng)常使用body-parser這個(gè)第三方中間件,來(lái)解析請(qǐng)求體數(shù)據(jù)。

使用步驟如下:

  • 運(yùn)行npm install body-parser安裝中間件
  • 使用require導(dǎo)入中間件
  • 調(diào)用app.use()注冊(cè)并使用中間件

Express內(nèi)置的express…urlencoded中間件,就是基于body~parser這個(gè)第三方中間件進(jìn)一步封裝出來(lái)的。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nest.js散列與加密實(shí)例詳解

    Nest.js散列與加密實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于Nest.js散列與加密的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 詳解node Async/Await 更好的異步編程解決方案

    詳解node Async/Await 更好的異步編程解決方案

    這篇文章主要介紹了詳解Async/Await 更好的異步編程解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 理解Koa2中的async&await的用法

    理解Koa2中的async&await的用法

    這篇文章主要介紹了理解Koa2中的async&await的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Node.js中Swagger的使用指南詳解

    Node.js中Swagger的使用指南詳解

    Swagger(目前用OpenAPI?Specification代替)是一個(gè)用于設(shè)計(jì)、構(gòu)建、記錄和使用REST?API的強(qiáng)大工具,本文將探討使用Swagger的一些關(guān)鍵技巧,需要的可以參考一下
    2024-01-01
  • Koa日志中間件封裝開發(fā)詳解

    Koa日志中間件封裝開發(fā)詳解

    這篇文章主要介紹了Koa日志中間件封裝開發(fā)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • nodejs使用Sequelize框架操作數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

    nodejs使用Sequelize框架操作數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

    這篇文章主要介紹了nodejs使用Sequelize框架操作數(shù)據(jù)庫(kù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Node的事件處理和readline模塊詳解

    Node的事件處理和readline模塊詳解

    這篇文章主要為大家詳細(xì)介紹了Node的事件處理和readline模塊,使用數(shù)據(jù)庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼

    koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼

    這篇文章主要介紹了koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Node.js連接MySQL數(shù)據(jù)庫(kù)的操作步驟

    Node.js連接MySQL數(shù)據(jù)庫(kù)的操作步驟

    在現(xiàn)代 Web 開發(fā)中,與數(shù)據(jù)庫(kù)的交互是不可避免的一部分,Node.js提供了許多庫(kù)和模塊,使得連接和操作 MySQL 數(shù)據(jù)庫(kù)變得相對(duì)簡(jiǎn)單,本文將介紹如何使用Node.js連接MySQL數(shù)據(jù)庫(kù),并進(jìn)行一些基本的操作,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • nodejs log4js 使用詳解

    nodejs log4js 使用詳解

    這篇文章主要介紹了nodejs log4js 使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

苗栗县| 灵武市| 河曲县| 阿克| 临桂县| 霍州市| 巴林右旗| 万州区| 同德县| 双辽市| 东港市| 西盟| 固阳县| 任丘市| 台前县| 黄梅县| 扶风县| 木兰县| 麻阳| 雷山县| 鸡泽县| 岢岚县| 阿克苏市| 盘锦市| 景泰县| 左权县| 英吉沙县| 马龙县| 鹿邑县| 株洲县| 信宜市| 浦县| 确山县| 搜索| 皋兰县| 滨海县| 涿州市| 共和县| 石首市| 磐石市| 班戈县|