我是nodejs的新手。我想建立一个包含多个类别的休息服务。
> app.js
var express = require('express')
, http = require('http')
, routes = require('./routes')
, path = require('path');
app = express();
app.use(app.router);
app.get('*',routes.index);
app.listen(3000);
console.log('Express app started on port 3000');
和
> routes/index.js
var sites = [
'sve',
'ice'
];
exports.index = function(req,res){
var url = req.url.split('/');
for (i in sites) {
app.get('/' + sites[i] + '/*',require('./' + sites[i]));
}
};
和
> routes/sve/index.js
module.exports = function(req, res){
console.log('sve')
res.end({category:'sve'});
};
和
> routes/sve/index.js
module.exports = function(req, res){
console.log('sve')
res.end({category:'sve'});
};
当我运行“节点应用程序”时,我得到“Express应用程序在端口3000上启动”并且服务器正在运行但是当我访问“localhost:3000 / sve / test”时我没有响应或“localhost:3000 / ice /测试“甚至”localhost:3000 / abc / test“。 甚至没有在控制台中。
我做错了什么?
答案 0 :(得分:3)
正如我的评论中提到的,我认为您正在寻找一种使用子应用程序(如Rails引擎)的方法来模块化您的应用程序。如果是这种情况,您应该使用app.use()来安装子应用程序。
上面有一个很好的视频here。
视频中未提及的最后一件相关内容,您可以相对安装子应用。例如:
var subapplication = require('./lib/someapp');
app.use('/base', app.use(subapplication));
这会将子应用程序中的路由视为来自'/ base'路径。例如,在此应用程序中安装时,子应用程序中捕获'/ a'的路由将匹配对'/ base / a'的请求。