这个问题扩展了Node.js 的 Connect、Express 和“中间件”是什么?
我正在学习 Javascript -> Node.js -> Connect -> Express -> ... 以了解如何使用现代 Web 开发堆栈。我有低层网络的背景,所以使用 Node.jsnet
和http
模块很容易。使用服务器将请求路由到不同处理程序的一般模式看起来自然而直观。
转到Connect,恐怕我不了解这个“中间件”的范式和一般数据流。例如,如果我创建了一些用于 Connect ala 的中间件;
// example.js
module.exports = function (opts) {
// ...
return function(req, res, next) {
// ...
next();
};
};
并在 Connect via 中“使用”它
var example = require('./example');
// ...
var server = connect.createServer();
// ...
server.use(example(some_paramater));
我不知道我的中间件何时被调用。此外,如果我正在使用use()
其他中间件,是否可以保证调用中间件的顺序?此外,我假设该函数next()
用于调用下一个(再次,我如何建立排序?)中间件;但是,没有传递任何参数(req、res、next)。这些参数是否以某种方式隐式传递?
我猜测使用的中间件模块的集合是串在一起的,从回调开始 -> 因此在初始请求回调和服务器结束响应的中间http
添加了一堆功能。
我正在尝试了解中间件范式以及信息/执行流程。
任何帮助是极大的赞赏。感谢您阅读