在NodeJS express模块的文档中,示例代码有app.use(…)。
use函数是什么?它的定义在哪里?
在NodeJS express模块的文档中,示例代码有app.use(…)。
use函数是什么?它的定义在哪里?
当前回答
App.use()是这样工作的:
请求事件在节点http服务器实例上触发。 表达 用req对象做一些内部操作。 这就是当 Express开始执行你在app.use中指定的事情
这很简单。
只有这样,express才会做剩下的事情,比如路由。
其他回答
App.use()是这样工作的:
请求事件在节点http服务器实例上触发。 表达 用req对象做一些内部操作。 这就是当 Express开始执行你在app.use中指定的事情
这很简单。
只有这样,express才会做剩下的事情,比如路由。
App.use()在快速应用程序中充当中间件。与app.get()和app.post()等不同,你实际上可以使用app.use()而不指定请求URL。在这种情况下,不管URL是什么,它都会被执行。
app对象在Express服务器创建时实例化。它有一个可以在app.configure()中定制的中间件堆栈(现在在4.x版本中已弃用)。
要设置中间件,可以为想要添加的每个中间件层调用app.use(<specific_middleware_layer_here>)(它可以通用于所有路径,也可以仅在服务器处理的特定路径上触发),它将添加到Express中间件堆栈中。中间件层可以在多个使用调用中一个一个地添加,甚至可以在一个调用中同时添加。 有关详细信息,请参阅使用文档。
为了给概念上理解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] } ]
As you might be able to deduce, I called app.use(express.bodyParser()), app.use(express.cookieParser()), etc, which added these express middleware 'layers' to the middleware stack. Notice that the routes are blank, meaning that when I added those middleware layers I specified that they be triggered on any route. If I added a custom middleware layer that only triggered on the path /user/:id that would be reflected as a string in the route field of that middleware layer object in the stack printout above.
每一层本质上都是通过中间件向流添加一个专门处理某些内容的函数。
例如,通过添加bodyParser,您可以确保您的服务器通过快速中间件处理传入的请求。因此,现在解析传入请求的主体是中间件在处理传入请求时所采取的过程的一部分——这都是因为调用了app.use(bodyParser)。
use将指定的中间件应用到主应用中间件堆栈中。当将中间件附加到主应用堆栈时,附加的顺序很重要;如果你在中间件B之前附加了中间件A,那么中间件A总是会先执行。您可以指定适用于特定中间件的路径。在下面的例子中,“hello world”将总是在“happy holidays”之前被记录。
const express = require('express')
const app = express()
app.use(function(req, res, next) {
console.log('hello world')
next()
})
app.use(function(req, res, next) {
console.log('happy holidays')
next()
})
通过使用app.use()和app.METHOD()函数将应用程序级中间件绑定到应用程序对象的实例,其中METHOD是中间件函数处理的请求的HTTP方法(比如小写的GET、PUT或POST)。