欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

前端需知nodejs?express中間件使用及定義詳解

 更新時間:2022年10月19日 09:19:04   作者:暴走的比卡丘  
這篇文章主要為大家介紹了前端需知nodejs?express中間件使用及定義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

在上一節(jié)中我們簡單了解了express的路由,本文主要分析下express的另一個核心功能中間件的使用。路由是express整個框架能有如今廣泛使用和發(fā)展的基礎(chǔ),那中間件就是其發(fā)展的養(yǎng)分。正是express豐富的中間件才節(jié)省了我們大量的開發(fā)時間。

中間件的定義

對于express來說,中間件其實就是一個規(guī)定了入?yún)⒑统鰠⒌腏avaScript函數(shù),這個函數(shù)可以處理請求request和返回response相關(guān)的參數(shù),其功能如下:

  • 執(zhí)行任何代碼。
  • 處理請求和返回對象并返回新的。
  • 結(jié)束本次請求。
  • 調(diào)用next函數(shù)執(zhí)行下一個中間件。 定義中間件的示例如下:
 //處理請求對象的:請求參數(shù)重插入個參數(shù)
const myMiddleware = function (req, res, next) {
  console.log('this is a middleware')
  req.requestTime = Date.now()
  next()
}

可配置的中間件,目前這種中間件在我們實際應(yīng)用中比較多,比如經(jīng)典expressJWT bodyParser中間件

module.exports = function (options) {
  return function (req, res, next) {
    // 根據(jù)傳入的參數(shù)執(zhí)行一些操作
    next()
  }
}

中間件的使用

  • 中間件注冊:使用app.use或app.METHOD進(jìn)行中間件注冊。
  • 中間按使用類型可以分為以下幾種:
    • 常規(guī)型:應(yīng)用層中間件、路由層中間件、內(nèi)置中間件、第三方中間件
    • 錯誤處理:錯誤處理中間件

  • 中間件整個執(zhí)行流程圖大概如上圖:注冊中間件和路由=》生成路由與中間件的映射=》客戶端請求=》執(zhí)行應(yīng)用層中間件=》匹配路由=》執(zhí)行異常中間件或路由映射的中間件,內(nèi)置中間件和第三方中間件的執(zhí)行流程根據(jù)其所定義的位置來執(zhí)行。
  • 應(yīng)用層中間件:使用 app.use() 和 app.METHOD() 函數(shù)將應(yīng)用層中間件綁定到應(yīng)用程序?qū)ο蟮膶嵗话銓懺趹?yīng)用最前面
var app = express();
app.use(function (req, res, next) {
  ******
  next();
});
  • 路由器層中間件:路由層中間件和應(yīng)用層類似,主要差別是路由中間件綁定的是express.Router()上。在復(fù)雜的項目中拆分路由時候常用
let express = require('express');
let router = express.Router();
router.post('/download/**/', function (req, res, next) {
    ******
});
  • 內(nèi)置中間件:自 V4.x 起,Express 不再依賴于 Connect。除 express.static 外,先前 Express 隨附的所有中間件函數(shù)現(xiàn)在以單獨模塊的形式提供。請查看中間件函數(shù)的列表
const express = require('express');
const app = express();
app.use(express.urlencoded({extended: false}));
  • 第三方中間件:這一種中間件是我們使用最多的中間件,用于增加和擴展路由器的功能。使用一般是npm install安裝=》引入=》使用。如下:morgan是一個開源的express日志處理中間件
const morgan = require('morgan')
app.use(morgan('short'));
  • 錯誤處理中間件:此種中間件和其他幾種的最大不同是函數(shù)中采用了四個變量,第一個變量是錯誤信息的返回。在項目的最后我們經(jīng)常會加上如下缺省錯誤處理,用于捕獲程序異常:
app.use((err, req, res, next) => {
  if (res.headersSent) {
    return next(err);
  }
  res.status(500);
  res.render('error', { error: err });
});

總結(jié)

express中間件的思想不緊緊方便了開發(fā),這種設(shè)計也是我們系統(tǒng)高內(nèi)聚低耦合多思想實踐之一。在我們?nèi)粘5臉I(yè)務(wù)開發(fā)中也可以參照這種設(shè)計來實現(xiàn)需求。

以上就是前端需知nodejs express中間件使用及定義詳解的詳細(xì)內(nèi)容,更多關(guān)于前端nodejs express中間件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于html5和nodejs相結(jié)合實現(xiàn)websocket即使通訊

    基于html5和nodejs相結(jié)合實現(xiàn)websocket即使通訊

    HTML5 擁有許多引人注目的新特性,如 Canvas、本地存儲、多媒體編程接口、WebSocket 等等。雖然現(xiàn)在大家把它捧的很火的樣子,但是個人認(rèn)為它還需要其他平臺的支持才能真正的"火起來"
    2015-11-11
  • 在nodeJs中如何修改json文件中的數(shù)據(jù)

    在nodeJs中如何修改json文件中的數(shù)據(jù)

    這篇文章主要介紹了在nodeJs中如何修改json文件中的數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • node.js 和HTML5開發(fā)本地桌面應(yīng)用程序

    node.js 和HTML5開發(fā)本地桌面應(yīng)用程序

    這篇文章主要介紹了node.js 和HTML5開發(fā)本地桌面應(yīng)用程序的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • nodejs管理工具nvm安裝過程詳解

    nodejs管理工具nvm安裝過程詳解

    Node版本管理器--nvm,可以運行在多種操作系統(tǒng)上。nvm for windows 是使用go語言編寫的軟件。 我電腦使用的是Windows操作系統(tǒng),所以我要記錄下在此操作系統(tǒng)上nvm的安裝和使用
    2021-06-06
  • nodejs中內(nèi)置模塊fs,path常見的用法說明

    nodejs中內(nèi)置模塊fs,path常見的用法說明

    這篇文章主要介紹了nodejs中內(nèi)置模塊fs,path常見的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 關(guān)于node+mysql數(shù)據(jù)庫連接池連接

    關(guān)于node+mysql數(shù)據(jù)庫連接池連接

    這篇文章主要介紹了關(guān)于node+mysql數(shù)據(jù)庫連接池連接,mysql有兩種連接方式:一種是直接連接 另一種是池化連接,我們這篇講的是池化連接,需要的朋友可以參考下
    2023-04-04
  • node.js中的querystring.unescape方法使用說明

    node.js中的querystring.unescape方法使用說明

    這篇文章主要介紹了node.js中的querystring.unescape方法使用說明,本文介紹了querystring.unescape的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node解析修改nginx配置文件操作實例分析

    node解析修改nginx配置文件操作實例分析

    這篇文章主要介紹了node解析修改nginx配置文件操作,結(jié)合實例形式分析了node.js使用nginx-conf解析修改nginx配置文件的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • nodejs中的fiber(纖程)庫詳解

    nodejs中的fiber(纖程)庫詳解

    這篇文章主要介紹了nodejs中的fiber(纖程)庫詳解,本文講解了node-fibers的安裝、API介紹、方法使用示例等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • koa2 數(shù)據(jù)api中間件設(shè)計模型的實現(xiàn)方法

    koa2 數(shù)據(jù)api中間件設(shè)計模型的實現(xiàn)方法

    這篇文章主要介紹了koa2 數(shù)據(jù)api中間件設(shè)計模型的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論