【在Express中,app.router到底做了什么()】青春须早为,岂能长少年。这篇文章主要讲述在Express中,app.router到底做了什么?相关的知识,希望能为你提供帮助。
当我使用express二进制文件创建示例Express应用程序时,引导程序代码包含以下行:
...var app = express();
...
app.use(app.router);
我没有找到关于app.router的更多信息。我认为这是处理路由(app.get(),app.post()等)规则的中间件,但是当我删除app.use(app.router)时,这些规则也会执行; 线。
那么这个中间件的确切用途是什么?
答案这是来自Express 2.x指南http://expressjs.com/2x/guide.html
“注意使用app.router,它可以(可选)用于挂载应用程序路由,否则第一次调用app.get(),app.post()等将挂载路由。”我怀疑这也适用于Express 3.x.
另一答案在Express 3.x中,app.router是connect middleware router的增强版本。正如hector所说,这是Express处理在
app.get
,app.post
等注册的请求处理程序。如果你没有明确地调用
app.use(app.router)
那么express会在你第一次使用app.get(...)
,app.post(...)
等时隐式调用它。但是,你可能想明确地使用.use
,因为那样你就选择了所有中间件的顺序。app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.methodOverride());
// app.get, app.post, etc called before static folder
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
了解如何在Express 3源here中检索路由器。
请注意Express 4 doesn't need app.router。
另一答案此方法已被弃用
为什么我们使用路由器..因为我们需要将我们的子应用程序连接到我们的主应用程序。
推荐阅读
- ASP.NET CORE没有app.UseEndpoints()方法
- 如何以编程方式从Symfony 3表单(表单类型)中删除字段
- 如何在你的Symfony 3表单中检索未映射字段的值
- 如何在Symfony 3中合并多个PDF
- 如何在WinForms中使用Barcodelib库使用C#从具有不同格式的字符串中创建条形码图像
- Winforms跨线程操作无效(从不是在其上创建线程的线程访问的控件”控件名”)
- 如何在Windows中使用Swift编程语言
- 每个Twig开发人员都应该能够回答的20个问题
- 如何使用WinForms中的OpenCVSharp库和带有C#的网络摄像机拍摄快照