首頁 > web前端 > js教程 > node Express學習之聊聊中間件

node Express學習之聊聊中間件

青灯夜游
發布: 2021-11-26 19:23:20
轉載
2388 人瀏覽過

這篇文章帶大家了解一下node中Express的中間件,介紹一下中間件的概念、中介軟體分類,希望對大家有幫助!

node Express學習之聊聊中間件

Express是一個簡潔而靈活的網路應用程式開發框架,可以用來快速地建立一個功能完整的網路應用程式;作為一個基於Node. js封裝的上層服務框架,Express提供了更簡潔的API,透過中間件路由使應用程式的組織管理更加容易。

中間件的概念

中間件,就是將請求處理函數進行模組化分解後的若干子處理函數,一些列子處理函數可以形成一個中間件堆疊;

中間件,是在應用程式的請求-回應週期中能夠存取請求物件req、回應物件res和next()函數的函數, next()函數主要負責將控制權交給下一個中間件;如果當前中間件沒有終結請求,並且next()沒有被調用,那麼請求將被掛起,後面定義的中間件將不會被執行。 、

中間件的執行順序,嚴格依照註冊的順序從上到下開始匹配執行。

中間件函數,可以執行以下任務:

  • 執行任何程式碼
  • 對請求和回應物件進行修改
  • 終結請求-回應週期
  • 呼叫堆疊中下一個中間件(next)

#中間件的主要用途就是處理HTTP請求,用來完成特定的任務如登入狀態驗證、請求日誌、錯誤處理、Cookie等。

node Express學習之聊聊中間件

中間件分類

1 應用程式層級中間件

使用app.use()函數將應用程式層級中間件綁定到應用程式物件實例上

const app = express();
/*表示匹配任何路由*/
app.use(function(req,res,next){
    console.log('请求时间:' +  Date.now());
    /*表示匹配完成这个中间件就继续往下执行。*/
    next()
})
登入後複製

2 路由級中間件

路由級中間件與應用程式層級中間件的工作方式相同,只是它被綁定到路由器實例上

import express from 'express';

const app = express();

const router = express.router();

router.use(
  '/user',
  function (req, res, next) {
    console.log(1);
    next();
  },
  function (req, res, next) {
    console.log(2);
    next();
  },
  function (rex, res, next) {
    console.log(3);
    next();
  }
);
登入後複製

3 錯誤處理中間件

錯誤處理中間件總是需要4個參數,必須提供4個參數來將其標識為錯誤處理中間件函數。即使不需要next函數,也必須指定它。否則next函數被解釋為常規中間件,並且無法處理錯誤

app.use(function(err, req, res, next){
    console.log(err.stack);
    res.status(500).send(err);
})
登入後複製

4 內建中間件

Express具有以下內建中間件:

  • express.static: 提供靜態資源服務
  • express.router: 提供路由服務

5 第三方中介軟體

第三方中間件如body-parser、cookie-parser等

6 自訂中間件

自訂中間件定義為函數,接受req,res ,next參數,使用app.use()註冊中間件

function log(req,res,next) {
    req.requestTime = Date.now();
    next()
}
// 注册自定义中间件
app.use(log);
登入後複製
// 自定义可配置中间件
function log(options) {
    return function (req,res,next) {
        // 根据options实现中间件功能
        next
    }
}
登入後複製

更多node相關知識,請訪問:nodejs 教程! !

以上是node Express學習之聊聊中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板