我是node.js的新手,我正在尝试创建一个路由器。我终于让它工作了,但它只是使用我在list.exports下列出的第一条路径,当一个url指向一个控制器,除非第一条路线是' / about',在这种情况下它是忽略了,但是,如果我把' /错误'或者' /'首先,他们呈现的页面(或者,在' / errors',他们调用的res.send()
),它将显示在每个网址上。请解释我的代码有什么问题。
/server/routes.js:
var express = require('express');
router = express.Router(),
users = require('../controllers/users'),
errors = require('../controllers/errors');
home = require('../controllers/home')
module.exports = function(app) {
router.get('/about', home.about);
router.get('/', users.new);
router.get('*', errors.four);
app.use('/*', router);
};
答案 0 :(得分:0)
对于像这样的通配符URL,您通常不需要指定路径(这也应该更快一些,因为Express不必进行路径解析/检查)。例如:
module.exports = function(app) {
var router = express.Router();
router.get('/about', home.about);
router.get('/', users.new);
router.get(errors.four);
app.use(router);
};
如果导出的函数被多次调用,那么在函数内部而不是父作用域中创建router
会更好,这可能会导致意外的路由行为。