Node.js 为什么ExpressJs路由器只对所有URL使用文件中的第一条路由?
我是node.js的新手,我正在尝试创建一个路由器。我终于让它工作了,但它在将url定向到控制器时只使用module.exports下列出的第一个路由,除非第一个路由是“/about”,在这种情况下它会被忽略,但是,如果我将“/errors”或“/”放在它们呈现的页面的前面(或者,在“/errors”的情况下,它们调用的Node.js 为什么ExpressJs路由器只对所有URL使用文件中的第一条路由?,node.js,express,model-view-controller,routing,Node.js,Express,Model View Controller,Routing,我是node.js的新手,我正在尝试创建一个路由器。我终于让它工作了,但它在将url定向到控制器时只使用module.exports下列出的第一个路由,除非第一个路由是“/about”,在这种情况下它会被忽略,但是,如果我将“/errors”或“/”放在它们呈现的页面的前面(或者,在“/errors”的情况下,它们调用的res.send()),它将显示在每个url上。请解释我的代码有什么问题 /server/routes.js: var express = require('expres
res.send()
),它将显示在每个url上。请解释我的代码有什么问题
/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);
};
对于这样的通配符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);
};
此外,最好在函数内部而不是父作用域中创建
路由器,以防导出的函数被多次调用,这可能会导致意外的路由行为。对于这样的通配符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);
};
此外,最好在函数内部创建路由器
,而不是父作用域,以防导出的函数被多次调用,从而导致意外的路由行为