2 回答

TA貢獻1891條經(jīng)驗 獲得超3個贊
你說的中間件是一系列函數(shù),從文字角度來說,這個沒錯。
“中間件傳入的參數(shù)是options”,這里的中間件應該只是 第三方中間件。
官方的中間件 是一個很廣的概念,
app.use(function (req, res, next) { console.log('Time:', Date.now()); next(); });
籠統(tǒng)的說,app.use()傳入的任何function都可以叫中間件,但是,這樣就不太專業(yè)了, 你要是傳個函數(shù),什么也不做,或者做一些沒用的事,那自然不能用中間件這么專業(yè)的詞語了,所以,只要你這個function做的是有效的,有用的事,并且實現(xiàn)的好,幫你解決了響應過程中的關鍵問題,就可以叫中間件了。
而那句“中間件傳入的參數(shù)是option”,那只不過是一些封裝好了的第三方中間件而已,類似于cookie-parser
。
如果這是面試官說的,只能說他理解太片面了,可能連官方文檔都沒看過。

TA貢獻1856條經(jīng)驗 獲得超17個贊
我個人覺得你可以直接看官方的樣例里面的幾個例子嘛, 比如 cookie-parser
就是一個典型的也符合你面試官口中的中間件.
function cookieParser(secret, options) {
return function cookieParser(req, res, next) {
if (req.cookies) {
return next();
}
var cookies = req.headers.cookie;
var secrets = !secret || Array.isArray(secret)
? (secret || [])
: [secret];
req.secret = secrets[0];
req.cookies = Object.create(null);
req.signedCookies = Object.create(null);
// no cookies
if (!cookies) {
return next();
}
req.cookies = cookie.parse(cookies, options);
// parse signed cookies
if (secrets.length !== 0) {
req.signedCookies = signedCookies(req.cookies, secrets);
req.signedCookies = JSONCookies(req.signedCookies);
}
// parse JSON cookies
req.cookies = JSONCookies(req.cookies);
next();
};
}
不過我個人的理解更傾向于, 只要函數(shù)的實現(xiàn)方式是類似于
function (req, res, next) { //todo something }
這種方式的函數(shù), 都可以被稱為中間件
- 2 回答
- 0 關注
- 1462 瀏覽
添加回答
舉報