首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJS / Express:什么是"app.use"?

NodeJS / Express:什么是"app.use"?
EN

Stack Overflow用户
提问于 2012-07-04 10:20:30
回答 29查看 274.9K关注 0票数 404

docs for the NodeJS express module中,示例代码包含app.use(...)

什么是use函数?它是在哪里定义的?

EN

回答 29

Stack Overflow用户

回答已采纳

发布于 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登录到控制台时的样子:

代码语言:javascript
运行
复制
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)

票数 430
EN

Stack Overflow用户

发布于 2017-04-25 02:37:44

每次向服务器发送请求时,都会调用每个app.use(middleware)

票数 78
EN

Stack Overflow用户

发布于 2012-07-04 10:33:59

use是一种配置Express HTTP服务器对象的路由所使用的中间件的方法。该方法被定义为Express所基于的Connect的一部分。

从4.x版本开始,Update不再依赖于Connect

以前包含在Express中的中间件功能现在包含在单独的模块中;请参阅list of middleware functions

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11321635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档