我为什么这样做:
var router = express.Router();
router.get('/', ...)
Run Code Online (Sandbox Code Playgroud)
代替
app.get('/', ...);
Run Code Online (Sandbox Code Playgroud)
这两个人会给我相同的结果.如果app已经是路由器,那么实例化路由器有什么意义呢?
小智 4
如果您正在编写一个非常复杂的应用程序,它会很有用。例如,您可能有一棵这样的树:
routes
user.js
post.js
server.js
Run Code Online (Sandbox Code Playgroud)
在 和 中user.js,post.js您将创建一个Router对象并将其导出。您可以将用户的所有路由附加到该路由器 - 比如/user/new, /user/edit, and /user/1, and /post/new, /post/edit, and /post/1。
在 中server.js,您将require通过以下方式连接每条路由并连接它们的路由器app.use:
app.use('/user', user);
app.use('/post', post);
Run Code Online (Sandbox Code Playgroud)
然后,所有对 的请求/user将被发送到用户路由器,所有对 的请求将/post被发送到后置路由器。然后,您可以注册路由,例如:
router.get('/new', function(req, res) { });
Run Code Online (Sandbox Code Playgroud)
并且它会自动映射到/user/newor /post/new。这很有用,因为它有助于组织您的应用程序,并迫使您将应用程序的一部分分离到一个文件中(关注点分离等等)。这是快递的一个有用的部分,但没有得到很好的宣传。
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |