Express4.x中間件特性有什么-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)Express4.x中間件特性有什么的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)公司-企業(yè)級云服務(wù)器提供商,為用戶提供云服務(wù)器、CDN、云安全服務(wù)、服務(wù)器托管、服務(wù)器租用、高防服務(wù)器等全方位云服務(wù)與各行業(yè)解決方案,幫助企業(yè)及個(gè)人極速備案,輕松上云,安全無憂。

Express 應(yīng)用程序基本上是一系列中間件函數(shù)調(diào)用中間件是在管道中執(zhí)行的。你可以想象一個(gè)送水的真實(shí)管道。水從一端泵入,然后在到達(dá)目的地之前還會(huì)經(jīng)過各種儀表和閥門。這個(gè)比喻中很重要的一部分是順序問題,你把壓力表放在閥門之前和之后的效果是不同的。同樣,如果你有個(gè)向水中注入什么東西的閥門,這個(gè)閥門“下游”的所有東西都會(huì)含有這個(gè)新添加的原料。在 Express 程序中,通過調(diào)用app.use 向管道中插入中間件。

在 Express 4.0 之前,這個(gè)管道有些復(fù)雜,因?yàn)楸仨氾@式地把路由器連進(jìn)來。取決于你在哪里連入路由器,路由的連入可以不按順序來,這使得當(dāng)你把中間件和路由處理器混在一起時(shí),管道的順序就更不清晰了。在 Express 4.0 中,中間件和路由處理器是按它們的連入順序調(diào)用的,順序更清晰。

路由處理器(app.get、app.post 等,經(jīng)常被統(tǒng)稱為 app.VERB)可以被看作只處理特定HTTP 謂詞(GET、POST 等)的中間件。同樣,也可以將中間件看作可以處理全部 HTTP謂詞的路由處理器(基本上等同于 app.all,可以處理任何 HTTP 謂詞;對于 PURGE 之類特別的謂詞會(huì)有細(xì)微的差別,但對于普通的謂詞而言,效果是一樣的)。

路由處理器的第一個(gè)參數(shù)必須是路徑。如果你想讓某個(gè)路由匹配所有路徑,只需用 /*。 中間件也可以將路徑作為第一個(gè)參數(shù),但它是可選的(如果忽略這個(gè)參數(shù),它會(huì)匹配所 有路徑,就像指定了 /* 一樣)

路由處理器和中間件的參數(shù)中都有回調(diào)函數(shù),這個(gè)函數(shù)有 2 個(gè)、3 個(gè)或 4 個(gè)參數(shù)(從技術(shù)上講也可以有 0 或 1 個(gè)參數(shù),但這些形式?jīng)]有意義)。如果有 2 個(gè)或 3 個(gè)參數(shù),頭兩個(gè)參數(shù)是請求和響應(yīng)對象,第三個(gè)參數(shù)是 next 函數(shù)。如果有 4 個(gè)參數(shù),它就變成了錯(cuò)誤處理中間件,第一個(gè)參數(shù)變成了錯(cuò)誤對象,然后依次是請求、響應(yīng)和 next 對象。如果不調(diào)用 next(),管道就會(huì)被終止,也不會(huì)再有處理器或中間件做后續(xù)處理。

如果你不調(diào)用 next(),則應(yīng)該發(fā)送一個(gè)響應(yīng)到客戶端(res.send、res.json、res.render 等); 如果你不這樣做,客戶端會(huì)被掛起并最終導(dǎo)致超時(shí)。如果調(diào)用了 next(),一般不宜再發(fā)送響應(yīng)到客戶端。如果你發(fā)送了,管道中后續(xù)的中間件或路由處理器還會(huì)執(zhí)行,但它們發(fā)送的任何響應(yīng)都會(huì)被忽略。

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 輸出 時(shí)間 和 //welcome 不會(huì)執(zhí)行 requestUser  中間件的代碼1552630945571//welcome

感謝各位的閱讀!關(guān)于Express4.x中間件特性有什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

標(biāo)題名稱:Express4.x中間件特性有什么-創(chuàng)新互聯(lián)
文章起源:http://www.muchs.cn/article8/epsop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、建站公司、品牌網(wǎng)站設(shè)計(jì)定制網(wǎng)站、動(dòng)態(tài)網(wǎng)站、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管