本篇內(nèi)容主要講解“node Express的中間件舉例分析”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“node Express的中間件舉例分析”吧!
在開江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,開江網(wǎng)站建設(shè)費(fèi)用合理。
Express是一個(gè)簡(jiǎn)潔而靈活的Web應(yīng)用程序開發(fā)框架,可以用來(lái)快速地搭建一個(gè)功能完整的Web應(yīng)用程序;作為一個(gè)基于Node.js封裝的上層服務(wù)框架,Express提供了更簡(jiǎn)潔的API,通過(guò)中間件和路由使應(yīng)用程序的組織管理更加容易。
中間件,就是將請(qǐng)求處理函數(shù)進(jìn)行模塊化分解后的若干子處理函數(shù),一些列子處理函數(shù)可以形成一個(gè)中間件堆棧;
中間件,是在應(yīng)用程序的請(qǐng)求-響應(yīng)周期中能夠訪問請(qǐng)求對(duì)象req、響應(yīng)對(duì)象res和next()函數(shù)的函數(shù),next()函數(shù)主要負(fù)責(zé)將控制權(quán)交給下一個(gè)中間件;如果當(dāng)前中間件沒有終結(jié)請(qǐng)求,并且next()沒有被調(diào)用,那么請(qǐng)求將被掛起,后面定義的中間件將不會(huì)被執(zhí)行。、
中間件的執(zhí)行順序,嚴(yán)格按照注冊(cè)的順序從上到下開始匹配執(zhí)行。
中間件函數(shù),可以執(zhí)行以下任務(wù):
執(zhí)行任何代碼
對(duì)請(qǐng)求和響應(yīng)對(duì)象進(jìn)行修改
終結(jié)請(qǐng)求-響應(yīng)周期
調(diào)用堆棧中下一個(gè)中間件(next)
中間件的主要用途就是處理HTTP請(qǐng)求,用來(lái)完成特定的任務(wù)如登錄狀態(tài)驗(yàn)證、請(qǐng)求日志、錯(cuò)誤處理、Cookie等。
1 應(yīng)用程序級(jí)中間件
使用app.use()函數(shù)將應(yīng)用程序級(jí)中間件綁定到應(yīng)用對(duì)象實(shí)例上
const app = express(); /*表示匹配任何路由*/ app.use(function(req,res,next){ console.log('請(qǐng)求時(shí)間:' + Date.now()); /*表示匹配完成這個(gè)中間件就繼續(xù)往下執(zhí)行。*/ next() })
2 路由級(jí)中間件
路由級(jí)中間件與應(yīng)用程序級(jí)中間件的工作方式相同,只是它被綁定到路由器實(shí)例上
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 錯(cuò)誤處理中間件
錯(cuò)誤處理中間件總是需要4個(gè)參數(shù),必須提供4個(gè)參數(shù)來(lái)將其標(biāo)識(shí)為錯(cuò)誤處理中間件函數(shù)。即使不需要next函數(shù),也必須指定它。否則next函數(shù)被解釋為常規(guī)中間件,并且無(wú)法處理錯(cuò)誤
app.use(function(err, req, res, next){ console.log(err.stack); res.status(500).send(err); })
4 內(nèi)置中間件
Express具有以下內(nèi)置中間件:
express.static: 提供靜態(tài)資源服務(wù)
express.router: 提供路由服務(wù)
5 第三方中間件
第三方中間件如body-parser、cookie-parser等
6 自定義中間件
自定義中間件被定義為一個(gè)函數(shù),接受req,res,next參數(shù),使用app.use()注冊(cè)中間件
function log(req,res,next) { req.requestTime = Date.now(); next() } // 注冊(cè)自定義中間件 app.use(log);
// 自定義可配置中間件 function log(options) { return function (req,res,next) { // 根據(jù)options實(shí)現(xiàn)中間件功能 next } }
到此,相信大家對(duì)“node Express的中間件舉例分析”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!