4

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

在 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无法识别表单和类似的 URL)

编辑:

对于好奇的人,AFAIK 子应用程序没有很清楚的文档记录,但它们应该可以工作,至少根据TJ Holowaychuk 的 Modular web applications with Node.js and Express(以及相关的 vimeo截屏视频)。另请参阅this other SO answer。

4

2 回答 2

0

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

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

我希望这就是你要找的。

于 2013-12-17T16:32:49.287 回答
0

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

请参阅此github 问题和有关挂载点的 Express 4 文档。

于 2015-04-21T12:09:22.810 回答