Nodejs Express app.use(express()) 问题
Nodejs Express app.use(express()) 问题
我在官方的例子中看到了这样的用法 var parent = express(); var app = express();
// mount the app parent.use(app);
在文档里面说的是 app.use(middleware) 参数好像只能是middleware 能不能具体解释一下这种用法的含义及用途?
Node.js Express app.use(express())
问题
问题描述
在官方的示例代码中,我看到了以下用法:
var parent = express();
var app = express();
// mount the app
parent.use(app);
在这段代码中,app.use()
方法通常用于注册中间件。但是这里的 parent.use(app)
看起来有些不同,因为它传递了一个应用实例而不是一个中间件函数。
解释
实际上,app.use()
方法不仅可以用于注册中间件,还可以用于将一个应用挂载到另一个应用的路径上。这种用法在构建复杂的、分层的应用程序时非常有用。
具体来说,parent.use(app)
的含义是将 app
挂载到 parent
应用的根路径(即 /
)上。这意味着所有发送到 parent
的请求,如果匹配到某个子路径,则会由 app
处理。
示例代码
假设我们有两个应用:parentApp
和 childApp
。我们希望 childApp
在特定路径下运行。
const express = require('express');
// 创建父应用
const parentApp = express();
// 创建子应用
const childApp = express();
// 在子应用中定义一些路由
childApp.get('/hello', (req, res) => {
res.send('Hello from Child App!');
});
// 将子应用挂载到父应用的 /child 路径上
parentApp.use('/child', childApp);
// 启动父应用
const PORT = process.env.PORT || 3000;
parentApp.listen(PORT, () => {
console.log(`Parent application is running on port ${PORT}`);
});
在这个例子中:
- 我们创建了两个应用:
parentApp
和childApp
。 - 在
childApp
中定义了一个路由/hello
。 - 使用
parentApp.use('/child', childApp)
将childApp
挂载到parentApp
的/child
路径上。 - 启动
parentApp
监听端口 3000。
当你访问 http://localhost:3000/child/hello
时,childApp
会处理这个请求并返回 “Hello from Child App!”。
总结
app.use()
方法不仅可以用作注册中间件,还可以用于将一个应用挂载到另一个应用的路径上。这使得你可以构建更复杂和模块化的应用结构。
能不能说具体点 哥们儿~
所谓middleware返回的是一个函数,当调用use的时候,内部就往stacks这个事件队列注入一个handle, 在http.createServer调用,可以用于扩展req,res对象,例如app.use(express.bodyParser()) app.use(express.session())之类的
恩 但是这种app1.use(app2) 是怎么回事 什么意思啊
首先app2是一个函数的,其实就是中间件
假如 app2的构造函数是这样的
exports.app2 = function () {
…引用些处理逻辑
return function app2 (req, res, next) {
…为req扩展属性
…为res扩展属性
}
}
哦哦 了解 原来express()也是类似于middleware的 多谢