在Node.js的Express框架中,app.use()
是一个非常重要的方法,它用于将指定的中间件函数添加到应用程序的请求处理堆栈中。中间件函数可以执行任何代码,修改请求和响应对象,结束请求-响应周期,或者调用堆栈中的下一个中间件函数。
app.use()
可以以多种方式使用,但以下是一些基本的例子:
-
无路径的中间件:
当你不为app.use()
指定路径时,该中间件将应用于所有请求。app.use(function(req, res, next) { console.log('Time:', Date.now()); next(); });
-
带路径的中间件:
你可以为app.use()
指定一个路径,这样中间件只会对匹配该路径的请求进行处理。app.use('/user', function(req, res, next) { console.log('Request URL:', req.originalUrl); next(); });
在上面的例子中,中间件函数只会在请求URL以
/user
开头时被调用。
3. 挂载应用:app.use()
也可以用于将一个Express应用作为另一个Express应用的中间件来挂载。var admin = express(); admin.get('/', function(req, res){ res.send('Admin Homepage'); }); app.use('/admin', admin);
在上面的例子中,当请求URL为
/admin
或/admin/...
时,admin
应用会处理这些请求。
4. 使用中间件库:app.use()
也常用于加载和使用第三方中间件库。例如,要使用Express的body-parser
中间件来解析JSON请求体,你可以这样做:var bodyParser = require('body-parser'); app.use(bodyParser.json());
app.use()
的一个关键特性是它可以调用堆栈中的下一个中间件函数(通过调用next()
)。这使得你可以创建一系列中间件函数来构建复杂的请求处理流程。注意:中间件函数的执行顺序与它们被添加到堆栈中的顺序相同。因此,如果你希望某些中间件在其他中间件之前运行,请确保先调用
app.use()
来添加它们。