Node.js 具有快速路由和子路由
Node.js with express routing and sub routing
我正在玩 node.js,但我不太明白为什么我设置的某些东西在一个实例中有效,但如果我稍作更改,它在另一个实例中将不起作用。
在我的 app.js 我有
app.use('/musicplayer', require('./routes/music/index'));
在我的 music\index.js 中我有
var express = require('express');
var router = express.Router();
router.use('/users', require('./users'));
module.exports = router;
在我的 users.js 我有这个 - 工作版本
var express = require('express');
var usersRouter = express.Router();
var sqllite3 = require('sqlite3').verbose();
usersRouter.get('/login', function(req, res, next) {
res.render('music/login', { title: 'Express' });
});
module.exports = usersRouter;
但我想将我正在定义的路由封装到另一个函数中,就像这样不起作用这只会挂起页面。
我的修改版users.js不工作
var express = require('express');
var usersRouter = express.Router();
var sqllite3 = require('sqlite3').verbose();
var router = function () {
usersRouter.get('/login', function (req, res, next) {
res.render('music/login', {title: 'Express'});
});
return usersRouter;
}
module.exports = router;
在控制台中,我可以看到它尝试获取但从未被路由,我看到了这个 "GET /musicplayer/users/login - - ms - -"。
我什至在我创建的匿名函数中的 return 之前放了一个 console.log 以知道它正在进入那里并且我正在从父路由连接路径。我确实在屏幕上点击了日志操作。
如有任何帮助或提示,我们将不胜感激:)
PS 如果您想知道我正在尝试为我想玩的不同开发工作分离出应用程序。所以这就是为什么我用 musicplayer/index.js 做子路由,而不是把所有东西都放在 app.js 中来声明我的主要路由。
Router.use()
需要另一个 Router
的实例。但是你的(非工作)模块只有 returns 一个函数。
在您的 index.js 中使用它来解决问题:
router.use('/users', require('./users')());
我正在玩 node.js,但我不太明白为什么我设置的某些东西在一个实例中有效,但如果我稍作更改,它在另一个实例中将不起作用。
在我的 app.js 我有
app.use('/musicplayer', require('./routes/music/index'));
在我的 music\index.js 中我有
var express = require('express');
var router = express.Router();
router.use('/users', require('./users'));
module.exports = router;
在我的 users.js 我有这个 - 工作版本
var express = require('express');
var usersRouter = express.Router();
var sqllite3 = require('sqlite3').verbose();
usersRouter.get('/login', function(req, res, next) {
res.render('music/login', { title: 'Express' });
});
module.exports = usersRouter;
但我想将我正在定义的路由封装到另一个函数中,就像这样不起作用这只会挂起页面。
我的修改版users.js不工作
var express = require('express');
var usersRouter = express.Router();
var sqllite3 = require('sqlite3').verbose();
var router = function () {
usersRouter.get('/login', function (req, res, next) {
res.render('music/login', {title: 'Express'});
});
return usersRouter;
}
module.exports = router;
在控制台中,我可以看到它尝试获取但从未被路由,我看到了这个 "GET /musicplayer/users/login - - ms - -"。
我什至在我创建的匿名函数中的 return 之前放了一个 console.log 以知道它正在进入那里并且我正在从父路由连接路径。我确实在屏幕上点击了日志操作。
如有任何帮助或提示,我们将不胜感激:)
PS 如果您想知道我正在尝试为我想玩的不同开发工作分离出应用程序。所以这就是为什么我用 musicplayer/index.js 做子路由,而不是把所有东西都放在 app.js 中来声明我的主要路由。
Router.use()
需要另一个 Router
的实例。但是你的(非工作)模块只有 returns 一个函数。
在您的 index.js 中使用它来解决问题:
router.use('/users', require('./users')());