了解nodejs中的模块/路由

我是nodejs中的新手。 我想用多个build立一个rest服务,可以说,类别。

> 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'}); }; 

当我运行“节点应用程序”我得到“快速应用程序启动端口3000”和服务器正在运行,但当我访问“本地主机:3000 / sve /testing”我没有任何反应或“localhost:3000 /冰/testing”或甚至“localhost:3000 / abc / test”。 甚至没有在控制台。

我究竟做错了什么?

正如我的评论中提到的,我认为你正在寻找一种使用子应用程序(如Rails引擎)的方法来模块化你的应用程序。 如果是这种情况,你应该使用app.use()来挂载一个子应用程序。

这里有一个很好的video。

在video中没有提到的最后一件相关的事情,你可以相对安装子应用程序。 例如:

 var subapplication = require('./lib/someapp'); app.use('/base', app.use(subapplication)); 

这会将子应用程序中的路由视为来自“/ base”path。 例如,在本例中,在子应用程序中捕获“/ a”的path将匹配“/ base / a”的请求。