2 回答
TA贡献1891条经验 获得超3个赞
你说的中间件是一系列函数,从文字角度来说,这个没错。
“中间件传入的参数是options”,这里的中间件应该只是 第三方中间件。
官方的中间件 是一个很广的概念,
app.use(function (req, res, next) { console.log('Time:', Date.now()); next(); });
笼统的说,app.use()传入的任何function都可以叫中间件,但是,这样就不太专业了, 你要是传个函数,什么也不做,或者做一些没用的事,那自然不能用中间件这么专业的词语了,所以,只要你这个function做的是有效的,有用的事,并且实现的好,帮你解决了响应过程中的关键问题,就可以叫中间件了。
而那句“中间件传入的参数是option”,那只不过是一些封装好了的第三方中间件而已,类似于cookie-parser
。
如果这是面试官说的,只能说他理解太片面了,可能连官方文档都没看过。
TA贡献1856条经验 获得超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();
};
}
不过我个人的理解更倾向于, 只要函数的实现方式是类似于
function (req, res, next) { //todo something }
这种方式的函数, 都可以被称为中间件
- 2 回答
- 0 关注
- 1426 浏览
添加回答
举报