如何使用参数将express.js子应用程序挂载到uri上

时间:2013-12-17 16:08:36

标签: node.js express subapplication

我希望能够在包含参数的uri上安装一个完整的快速子应用程序。我有类似以下内容:

app.js中的

var app_authors = require('./api/authors');
var app = express();
...
app.use('/api/authors', app_authors);
...
module.exports = app;

在api / authors.js中:

var app_author_books = require('./api/books');
var app = express();
...
app.get('/:author', ...);
...
app.use('/:author/books', app_author_books);
...
module.exports = app;

当第一个子应用程序工作时,挂载在/api/authors上,而嵌套的子应用程序却没有(/api/authors/:author/books及类似形式的网址无法识别)

编辑:

对于好奇的,AFAIK子应用程序的记录不是很清楚,但它们应该起作用,至少根据TJ Holowaychuk's Modular web applications with Node.js and Express(以及相关的vimeo screencast)。另请参阅this其他SO答案。

2 个答案:

答案 0 :(得分:0)

您似乎想要创建不同的“应用程序”来分隔不同文件中的路由/服务。

您应该尝试here给出的方法 他们将app变量作为参数传递,因此,您只有一个应用程序可以控制所有路径(位于单独文件中)。

我希望这就是你要找的东西。

答案 1 :(得分:0)

在Express 4中,当您在路径(或正则表达式)上安装子应用程序时,此路径将从req.path中删除(但仍在req.originalUrl中)。

请参阅此github issue和Express 4 doc有关挂载点的信息。