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

新手上路,请多包涵

express 模块 的文档中,示例代码有 app.use(...)

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

原文由 Alexander Bird 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 875
2 个回答

app 对象在创建 Express 服务器时被实例化。它有一个可以在 — 中自定义的 中间件 堆栈 app.configure() 现在在版本 4.x 中已弃用)

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

举例说明 Express 中间件的概念理解,以下是我的应用程序中间件堆栈 (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 , _您可以确保您的服务器通过快速中间件处理传入请求_。因此, _现在解析传入请求的主体是中间件在处理传入请求时所采取的过程的一部分_——所有这些都是因为你调用 app.use(bodyParser)

原文由 chinnychinchin 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Tyrese 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题