javascript - Meteor添加中间件方法的差异

标签 javascript node.js meteor

我通常使用以下代码来管理服务器上的路由:

WebApp.connectHandlers.stack.splice(0, 0, {
    route: '...',
    handle: function(req, res, next) {...},
});

但是,我在某些地方看到了另一种模式:

WebApp.connectHandlers.use(function(req, res, next) {
    ...
});

除了语法和路由管理之外,它们之间还有什么区别?由于性能或其他原因,其中一个更好使用吗?

最佳答案

中间件的工作方式是使用某种列表然后处理响应。所以如果你有

WebApp.connectHandlers.use(function(req, res, next) {
    ...
});

如果您没有在此处以响应结束,它将调用 next() 并在堆栈中查找要运行的下一个连接处理程序,如果没有任何下一个,那么上。

这有一点顺序,因此您描述的第一个方法将某些内容添加到堆栈的开头(或 splice 中指定的索引),第二个方法将其添加到堆栈的末尾。

因此,在 Meteor 中,它取决于其他中间件,如果您想在其他处理程序之前访问 reqres 值,您可以使用第一个(例如某种 HTTP 登录检查/升级 websocket 请求),另一种使用 .use 在堆栈末尾进行其他操作(IP 地址/cookie 检查)

有一点需要注意,虽然我不是 100% 确定这个 Meteor 也可能使用中间件,所以你需要在 Meteor 之前到达堆栈,所以第一个语法可能会更好,特别是如果 Meteor 以请求结束的话所以最后添加的可能没有效果。

关于javascript - Meteor添加中间件方法的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19135828/

相关文章:

javascript - 如何对对象数组进行排序?

javascript - 使用zombie.js 抓取网站的问题

javascript - 如何在 Meteor/JavaScript 客户端中运行解锁后台任务?

javascript - GraphQL - 如何响应不同的状态码?

javascript 函数在页面加载时调用,而不是在动态生成的表中单击按钮时调用

node.js - 从 sequelize 钩子(Hook)返回不同的结果

javascript - 在 NodeJS 中使用 UDP 连接到同一服务器的多个客户端

css - 如何用meteor处理CSS?

mongodb - 从 MongoDB 中检索 HTML 以在模板中使用

javascript - 无法使用 fetch api 发送 DELETE 请求