gpt4 book ai didi

node.js - 理解nodejs中的模块/路由

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:24 24 4
gpt4 key购买 nike

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

当我运行“node app”时,我得到“Express app在端口3000上启动”并且服务器正在运行,但是当我访问“localhost:3000/sve/test”时,我没有响应或“localhost:3000/ice/”测试”甚至“localhost:3000/abc/test”。即使在控制台中也不行。

我做错了什么?

最佳答案

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

上面有一个很好的视频here .

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

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

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

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

关于node.js - 理解nodejs中的模块/路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com