【问题标题】:understanding modules/routes in nodejs理解 nodejs 中的模块/路由
【发布时间】:2013-03-04 22:01:36
【问题描述】:

我是 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”。 甚至在控制台中也没有。

我做错了什么?

【问题讨论】:

  • 我不太确定您要做什么,但您似乎正在尝试挂载子应用程序?以便 mydomain.com/ice/* 的所有内容都由一组特定于 ice 等的不同路由处理?
  • 是的,我想将应用程序拆分为不同的子应用程序。当检测到 /sve/ 时运行一段代码,当检测到 /ice/ 时,运行另一段代码

标签: node.js express


【解决方案1】:

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

上面有一个很好的视频here

视频中未提及的最后一件事是,您可以相对安装子应用。例如:

var subapplication = require('./lib/someapp');

app.use('/base', app.use(subapplication));

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

【讨论】:

  • 您还可以在这里找到有用的信息:stackoverflow.com/questions/8514106/…
  • 谢谢尼克。该信息将有助于我使用 subaps 设置我的应用程序。
  • 没问题。如果这回答了您的问题,请随时接受它
猜你喜欢
  • 2018-11-08
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多