Node.js中的中间件设计模式:Connect
Middleware design pattern in Node.js: Connect
这个问题扩展了What is Node.js的Connect,Express和"中间件";?
我正在走学习Javascript的道路->Node.js->连接->快速->。。以便学习如何使用现代web开发堆栈。我有底层网络的背景,所以使用Node.js的net
和http
模块很容易。使用服务器将请求路由到不同处理程序的一般模式看起来自然而直观。
转到Connect,恐怕我不理解这个";中间件";。例如,如果我创建一些中间件用于Connect-ala;
// example.js
module.exports = function (opts) {
// ...
return function(req, res, next) {
// ...
next();
};
};
以及";使用";通过连接
var example = require('./example');
// ...
var server = connect.createServer();
// ...
server.use(example(some_paramater));
我不知道我的中间件什么时候被调用。此外,如果我在use()
中使用其他中间件,是否可以保证调用中间件的顺序?此外,我假设函数next()
用于调用下一个(同样,我如何建立订单?)中间件;但是,没有传递任何参数(req、res、next)。这些参数是以某种方式隐式传递的吗?
我猜使用的中间件模块集合是串在一起的,从http
回调开始->因此,在初始请求回调和服务器结束响应的中间添加了一组功能。
我试图理解中间件的范例,以及信息/执行的流程。
中间件被称为函数链,其顺序基于中间件定义顺序(时间)以及匹配的路由(如果适用)
考虑到req
和res
对象在链中传播,因此您可以沿链重用/改进/修改它们中的数据。
中间件有两种通用用例:通用和特定。
Generic是您在上面的示例中定义的:app.use
,它将应用于每一个请求。每个中间件都必须在内部调用next()
,如果它想继续下一个中间件的话。
当您使用app.get('/path', function(...
时,这个实际功能也是中间件,只是内联定义的。所以它有点完全基于中间件,并且没有endware
:D
链顺序基于定义顺序。因此,以同步方式或顺序可靠的异步方式定义中间件是很重要的。否则,当中间件链相互依赖时,不同顺序的中间件可能会破坏逻辑。
可以使用一些中间件来断开return next(new Error());
链。例如,它对于验证或身份验证中间件非常有用
中间件的另一种有用的使用模式是处理和解析请求数据,比如cookie,或者app.use(express.bodyParser());
的好例子。
- 用于操纵DOM API的Javascript设计模式
- 用于多个选项卡和模块化的knockoutjs设计模式
- 自动化设计模式c++
- jQuery自动完成标记新的标签设计模式
- 有没有一种方法可以在设计模式下将ng模型或工厂绑定到iframe
- Javascript MVVM 设计模式 - 如何跟踪脏状态以及谁应该做 Ajaxing
- 包含 2 个或更多对象的页面上的 JavaScript 设计模式
- 在 Node 中.js释放 zalgo 的设计模式为什么异步路径是一致的
- Django设计模式-在加载时填充客户端JavaScript变量的方法
- Javascript策略设计模式问题
- 用于处理带有promise的外部接口中的参数的设计模式
- angularjs设计模式和从服务器获取数据的最佳实践
- JavaScript设计模式的建议
- 这种设计模式什么时候才能打破
- JavaScript设计模式,一个函数正在被覆盖
- BIRT报告在设计模式下导出到XLSX,但在运行时不导出
- 通量/反应设计模式
- 它是什么样的Javascript设计模式/方法
- 火狐浏览器 iframe 设计模式不起作用
- Node.js中的中间件设计模式:Connect