在docs for the NodeJS express
module中,示例代码包含app.use(...)
。
什么是use
函数?它是在哪里定义的?
发布于 2012-07-04 10:52:02
app对象在创建Express服务器时实例化。它有一个可以在app.configure()
(this is now deprecated in version 4.x)中定制的中间件堆栈。
要设置您的中间件,您可以为您想要添加的每个中间件层调用app.use()
(它可以是所有路径的通用,或者仅在您的服务器处理的特定路径上触发),并且它将添加到您的Express中间件堆栈中。中间件层可以在多次use
调用中逐个添加,甚至可以在一次调用中一次添加所有中间件层。有关更多详细信息,请参阅use
documentation。
为了从概念上理解Express Middleware,下面是我的应用程序中间件堆栈(app.stack)在将我的应用程序对象作为JSON登录到控制台时的样子:
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
正如您可能能够推断的那样,我调用了app.use(express.bodyParser())
、app.use(express.cookieParser())
等,它们将这些快速中间件“层”添加到中间件堆栈中。请注意,路由是空白的,这意味着当我添加这些中间件层时,我指定它们在任何路由上触发。如果我添加了一个仅在路径/user/:id
上触发的自定义中间件层,则在上面的堆栈打印输出中,该中间件层对象的route
字段将反映为一个字符串。
实际上,每一层都添加了一个专门处理通过中间件的流的功能。
例如,通过添加bodyParser
,您可以确保您的服务器通过express中间件处理传入的请求。因此,解析传入请求的正文是您的中间件在处理传入请求时所采用的过程的一部分--所有这些都是因为您调用了app.use(bodyParser)
。
发布于 2017-04-25 02:37:44
每次向服务器发送请求时,都会调用每个app.use(middleware)。
发布于 2012-07-04 10:33:59
use
是一种配置Express HTTP服务器对象的路由所使用的中间件的方法。该方法被定义为Express所基于的Connect的一部分。
从4.x版本开始,Update不再依赖于Connect。
以前包含在Express中的中间件功能现在包含在单独的模块中;请参阅list of middleware functions。
https://stackoverflow.com/questions/11321635
复制相似问题