【发布时间】:2015-04-03 00:22:00
【问题描述】:
我从 NodeJS 和 Express 4 开始,我有点困惑。我一直在阅读 Express 网站,但看不到 何时 使用路由处理程序或何时使用 express.Router。
如我所见,如果我想在用户点击/show 时显示页面或其他内容,例如我应该使用:
var express = require('express')
var app = express()
app.get("/show", someFunction)
一开始,我认为这是旧的(对于 Express 3)。是这样吗,还是 Express 4 也是这样?
如果这是 Express 4 中的方法,express.Router 是用来做什么的?
我阅读了与上面几乎相同的示例,但使用的是express.Router:
var express = require('express');
var router = express.Router();
router.get("/show", someFunction)
那么,这两个例子有什么区别呢?
如果我只想做一个简单的测试网站,我应该使用哪一个?
【问题讨论】:
-
A
Router不会.listen()单独处理请求。这对于将您的应用程序分成多个模块很有用——在每个模块中创建一个Router,app可以将require()和.use()作为中间件。 -
正如@JonathanLonowski 所暗示的,
app.get(..)语法只是让express.router更方便使用的捷径。如果您刚刚开始,请不要担心路由器的细节。 -
所以你是说我现在应该只使用 app.get()?仍然对何时使用一种或另一种感到困惑
-
@nelson687 它们之间并没有真正的硬性规则。如果您觉得
app's自己的路由方法,例如app.get(),足以满足您的需求,请使用它们。Router只是为了方便帮助您跨多个模块组织应用程序。 From the guide: "express.Router类可用于创建模块化可挂载路由处理程序。Router实例是一个完整的中间件和路由系统;因此它通常被称为“迷你应用程序” "."