您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Express4.x中間件特性有什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
Express 應用程序基本上是一系列中間件函數調用中間件是在管道中執行的。你可以想象一個送水的真實管道。水從一端泵入,然后在到達目的地之前還會經過各種儀表和閥門。這個比喻中很重要的一部分是順序問題,你把壓力表放在閥門之前和之后的效果是不同的。同樣,如果你有個向水中注入什么東西的閥門,這個閥門“下游”的所有東西都會含有這個新添加的原料。在 Express 程序中,通過調用app.use 向管道中插入中間件。
在 Express 4.0 之前,這個管道有些復雜,因為必須顯式地把路由器連進來。取決于你在哪里連入路由器,路由的連入可以不按順序來,這使得當你把中間件和路由處理器混在一起時,管道的順序就更不清晰了。在 Express 4.0 中,中間件和路由處理器是按它們的連入順序調用的,順序更清晰。
路由處理器(app.get、app.post 等,經常被統稱為 app.VERB)可以被看作只處理特定HTTP 謂詞(GET、POST 等)的中間件。同樣,也可以將中間件看作可以處理全部 HTTP謂詞的路由處理器(基本上等同于 app.all,可以處理任何 HTTP 謂詞;對于 PURGE 之類特別的謂詞會有細微的差別,但對于普通的謂詞而言,效果是一樣的)。
路由處理器的第一個參數必須是路徑。如果你想讓某個路由匹配所有路徑,只需用 /*。 中間件也可以將路徑作為第一個參數,但它是可選的(如果忽略這個參數,它會匹配所 有路徑,就像指定了 /* 一樣)
路由處理器和中間件的參數中都有回調函數,這個函數有 2 個、3 個或 4 個參數(從技術上講也可以有 0 或 1 個參數,但這些形式沒有意義)。如果有 2 個或 3 個參數,頭兩個參數是請求和響應對象,第三個參數是 next 函數。如果有 4 個參數,它就變成了錯誤處理中間件,第一個參數變成了錯誤對象,然后依次是請求、響應和 next 對象。如果不調用 next(),管道就會被終止,也不會再有處理器或中間件做后續處理。
如果你不調用 next(),則應該發送一個響應到客戶端(res.send、res.json、res.render 等); 如果你不這樣做,客戶端會被掛起并最終導致超時。如果調用了 next(),一般不宜再發送響應到客戶端。如果你發送了,管道中后續的中間件或路由處理器還會執行,但它們發送的任何響應都會被忽略。
var express = require('express') var app = express() var requestTime = function (req, res, next) { req.requestTime = Date.now() console.log(req.requestTime ); next() } var requestUser = function (req, res, next) { console.log('welcome'); next() } app.use(requestTime) app.get('/', function (req, res) { console.log('//welcome'); var responseText = 'Hello World!<br>' responseText += '<small>Requested at: ' + req.requestTime + '</small>' res.send(responseText) }) app.use(requestUser) app.listen(3000)
訪問 127.0.0.1:3000 輸出 時間 和 //welcome 不會執行 requestUser 中間件的代碼1552630945571//welcome
感謝各位的閱讀!關于Express4.x中間件特性有什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。