一尘不染

NodeJS / Express:什么是“ app.use”?

node.js

NodeJS
express模块
文档中,示例代码包含app.use(...)

什么是use功能,它在哪儿定义?


阅读 268

收藏
2020-07-07

共1个答案

一尘不染

app对象在创建Express服务器时实例化。它具有一个可以在其中定制的 _ 中间件
堆栈_app.configure()(现在在4.x版中已弃用)

要设置中间件,您可以app.use(<specific_middleware_layer_here>)为要添加的每个中间件层调用(可以对所有路径通用,也可以仅在服务器处理的特定路径上触发),并将其添加到Express中间件堆栈中。中间件层可以在的多个调用中一个接一个地添加use,甚至可以一次调用一次全部添加。有关更多详细信息,请参见use文档

为了举例说明Express Middleware的概念,这是将我的应用程序对象作为JSON登录到控制台时我的应用程序中间件堆栈(app.stack)的外观:

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您确保服务器通过快速中间件处理传入的请求 。因此,
现在解析传入请求的主体是中间件在处理传入请求时所采用的过程的一部分 -全部是因为您调用了app.use(bodyParser)

2020-07-07