使用/和/:slug表示dynamic路由作为不同的路由文件

所以我正在重构我的节点/快速应用程序,我试图分开我的根。 这是我的问题:

我想要一个主页,然后是一个完全不同的扩展页面,这不属于其他路线。

例如,假设我有3个页面:主页,关于,然后是URL为“mysite.com/username123”的用户页面。

现在我知道(或者至less相信)可以通过执行如下操作来完成:

var express = require('express'); var router = express.Router(); router.get('/:slug', function(req, res, next) { if(req.params.slug) { var data = { my: 'data' }; res.render('index', data); } else { var userdata = { my: 'data' }; res.render('user', userdata); } }); module.exports = router; 

但是这不是我想要做的; 我想保留在两个不同的路线文件。 所以我的app.js文件应该是这样的:

 var routes = require('./routes/index'); var users = require('./routes/users'); var about = require('./routes/about'); app.use('/', index); app.use('/', users); app.use('/about', about); 

/users呈现如果有一个slu。。 这实际上是一些作品。 如果没有:slug ,索引文件被加载,否则加载用户文件(在path文件中有:slug,这里没有显示)。 但是/about被覆盖。

现在我想我可以推动/about到达列表的顶部,这将工作,但这似乎是非常草率,这样做的整个目的是正确地构build我的代码。

像这样的情况应该如何妥善处理? 有人能给我一些帮助吗?

它发生是因为/about/:slug覆盖。 换句话说,快递不能说明是不是要成为一个slug 。。

解决scheme将是要么

  1. 添加一个url参数来区分路线。

    router.get('/users/:slug')

  2. 跳到下一个路线

     router.get(':slug', function (req, res, next) {` if (req.params.slug === 'about') { return next(); } // get user data and render res.render('user', userdata); }); 

在此下面附上/about路由。