【问题标题】:Express app.useExpress app.use
【发布时间】:2012-12-23 15:59:13
【问题描述】:

我一直在阅读文档/网址,但真的不了解 app.use 及其用法。 我知道这是连接的一部分,但我真的不明白。

例子:

// ignore GET /favicon.ico
app.use(express.favicon());
// add req.session cookie support
app.use(express.cookieSession());
// do something with the session
app.use(count);

你能解释一下这 3 个吗?他们是什么意思? 这是否意味着基于 (1) app.use 注意到但 => app.get? app.use(count) 这个计数什么时候执行(或)调用/

看起来很基本,但没有得到答案

// ignore GET /favicon.ico
app.use(express.favicon());

// pass a secret to cookieParser() for signed cookies 
app.use(express.cookieParser('manny is cool'));

// add req.session cookie support
app.use(express.cookieSession());

// do something with the session
app.use(count);

// custom middleware
function count(req, res) {

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    当你调用app.use() 时,你传入一个函数来处理请求。当请求进来时,Express 会按顺序执行所有函数,直到请求被处理。

    express.favicon 是一个简单的函数,它会在请求时返回 favicon.ico。它实际上是如何开始使用这种模式的一个很好的例子。您可以通过查看源代码来查看源代码:node_modules/express/node_modules/connect/lib/middleware/favicon.js

    express.cookieSession 是一些支持会话数据的中间件,由客户端通过 cookie 键入。

    我不知道count 做了什么……那是你自己的代码吗?无论如何,如果不清楚,请告诉我。

    【讨论】:

    • 感谢您的解释。所以“app.use(),你传入一个函数来处理请求”所以在我的例子中我没有请求只有要调用的函数。所以它会默认“GET”??? ..是的 count 是一个用户定义的函数,作为函数 count(req, res)。你能解释一下 app.use(express.cookieSession());叫做?我的问题是没有req。等等将被称为什么基础
    • 什么意思?您没有使用 Express 来处理 HTTP 请求吗?无论请求是什么,都将调用加载有app.use 的中间件。这并不意味着它总是对请求采取行动……由中间件决定是处理请求还是让下一个函数处理它。
    • 我已经用一个示例程序更新了这个问题。我的问题是当一个请求出现时应该调用“app.use”。我看到在我的情况下它总是调用 app.use(count) 。我问为什么不:app.use(express.cookieSession());
    • 它们都被调用,以便它们被设置为app.use,直到一个中间件决定处理请求。如果您到达count,您的express.cookieSession 将被调用。另见:stackoverflow.com/a/8711139/362536
    • 是的,没错。由中间件决定是否调用下一个函数。中间件,例如您拥有的 cookie 处理程序,将始终调用下一个函数。
    猜你喜欢
    • 1970-01-01
    • 2012-07-04
    • 2013-06-11
    • 2016-10-25
    • 2015-11-22
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多