前面的文章裡也介紹過了,express 是乙個簡潔、靈活的node.js
web 應用開發框架, 它提供一系列強大的特性,幫助你建立各種 web 和移動裝置應用。express專案的底層由許多的中介軟體在協同工作,可以這麼說,乙個express
應用就是在呼叫各種中介軟體。
中介軟體是乙個可訪問請求物件(req
)和響應物件(res
)的函式,在 express 應用的請求-響應迴圈裡,下乙個內聯的中介軟體通常用變數next
表示。中介軟體的功能包括:
注意:如果當前中介軟體沒有終結請求-響應迴圈,則必須呼叫next()
方法將控制權交給下乙個中介軟體,否則請求就會掛起。使用可選則掛載路徑,可在應用級別或路由級別裝載中介軟體。可裝載一系列中介軟體函式,在掛載點建立乙個中介軟體系統棧。
// 沒有掛載路徑的中介軟體,應用的每個請求都會執行該中介軟體
(req, res, next) );
// 掛載至 /user/:id 的中介軟體,任何指向 /user/:id 的請求都會執行它
(req, res, next) );
// 路由和控制代碼函式(中介軟體系統),處理指向 /user/:id 的 get 請求
(req, res, next) );
// 乙個中介軟體棧,對任何指向 /user/:id 的 http 請求列印出相關資訊
(req, res, next)
, function
(req, res, next)
)
// 乙個中介軟體棧,處理指向 /user/:id 的 get 請求
(req, res, next) , function
(req, res, next) );
// 處理 /user/:id, 列印出使用者 id
(req, res, next) );
作為中介軟體系統的路由控制代碼,使得為路徑定義多個路由成為可能。在上面的例子中,為指向 /user/:id 的 get 請求定義了兩個路由。第二個路由雖然不會帶來任何問題,但卻永遠不會被呼叫,因為第乙個路由已經終止了請求-響應迴圈。
// 乙個中介軟體棧,處理指向 /user/:id 的 get 請求
(req, res, next) , function
(req, res, next) );
// 處理 /user/:id, 渲染乙個特殊頁面
(req, res, next) );
路由級中介軟體和應用級中介軟體一樣,只是它繫結的物件為express.router()
。
var router =express.router();
路由級使用router.use()
或router.verb()
載入。
上述在應用級建立的中介軟體系統,可通過如下**改寫為路由級:
var router = express.router();
// 沒有掛載路徑的中介軟體,通過該路由的每個請求都會執行該中介軟體
router.use(function
(req, res, next) );
// 乙個中介軟體棧,顯示任何指向 /user/:id 的 http 請求的資訊
router.use('/user/:id', function
(req, res, next) , function
(req, res, next) );
// 乙個中介軟體棧,處理指向 /user/:id 的 get 請求
router.get('/user/:id', function
(req, res, next) , function
(req, res, next) );
// 處理 /user/:id, 渲染乙個特殊頁面
router.get('/user/:id', function
(req, res, next) );
// 將路由掛載至應用
錯誤處理中介軟體有 4 個引數,定義錯誤處理中介軟體時必須使用這 4 個引數。即使不需要next
物件,也必須在簽名中宣告它,否則中介軟體會被識別為乙個常規中介軟體,不能處理錯誤。
錯誤處理中介軟體和其他中介軟體定義類似,只是要使用 4 個引數,而不是 3 個,其簽名如下: (err
,req
,res
,next
)。
(err, req, res, next)
);我之前在 《深入理解express框架》裡 也提到在 4.x 版本中,express 已經不再依賴 connect。除了 express.static,express 以前包括的中介軟體現在已經在乙個單獨的庫里,請參考 中介軟體列表 。
express.static
是express
唯一內建的中介軟體,它基於serve-static
,負責在express
應用中提供靜態資源。
引數root
指提供靜態資源的根目錄。可選的options
引數擁有如下屬性。
下面的例子使用了express.static
中介軟體,其中的options
物件經過了精心的設計。
var options =
}
每個應用可有多個靜態目錄。
express是一款提供路由和中介軟體的 web 框架,但其本身的功能卻異常精簡。express
應用的功能通過第三方中介軟體來新增。安裝所需功能的node
模組,並在應用中載入,可以在應用級載入,也可以在路由級載入。下面的例子安裝並載入了乙個解析cookie
的中介軟體:cookie-parser
$ npm install cookie-parser
var express = require('express');var cookieparser = require('cookie-parser');
// 載入 cookie 解析中介軟體
node中介軟體KOA函式
const koa require koa 應用程式物件 中介軟體 傳送http koa 接手http 中介軟體 其實就是 函式 function test 當請求傳送過來的時候,將函式 中介軟體 註冊到程式上 前端傳送乙個http請求 來觸發中介軟體 koa 中 只會執行第乙個中介軟體 ctx 上...
node 27 Express 中介軟體
中介軟體本身是乙個方法,該方法接收三個引數 公共配置服務 var express require express express listen 3000 function err console.log running.不關心請求路徑的中介軟體 只要是呼叫localhost 3000,不論後面拼接什...
node中介軟體有哪些型別?
中介軟體為主要的邏輯業務所服務,可分為 應用級中介軟體 路由級中介軟體 內建中介軟體 第三方中介軟體 錯誤級中介軟體。1 應用級中介軟體 每乙個中介軟體就是呼叫乙個函式,需要配合其他的中介軟體或者路由使用 server 函式 攔截所有的路由 server.use reg 函式 攔截特定的路由 con...