在快递应用程序中制作多个应用程序

时间:2013-08-18 11:30:42

标签: javascript django node.js express routes

我来自django背景,基本上,框架允许很多模块化代码。我在nodejs和express中创建了一个简单的博客引擎。但是,所有路由最终都在我的主app.js文件中,或者更确切地说是app.coffee,因为我在我的nodejs应用程序中使用了coffeescript,它符合javascript。

所以,说这是我的路线的样子:

app.get('/', index.index)
app.get('/users', user.list)
app.get('/blog', blog.blogList)
app.get('/blog/:id(\\d{5})', blog.blogEntry)

现在,问题在于,如果我想按类别对这些进行排序,那么就会发生这种情况,那么我就必须在同一个文件中添加另一个app.get函数。代码:

app.get('/blog/categores/:cat(\w+), blog.someotherview)

如果我想根据时间添加排序,例如:

app.get('/blog/time/:year(\\d{4}), blog.someYearView)

我想做的是将/blog的所有内容委托给blog.js进行处理。理想情况下,如何从主app.js文件中获取所有这些路由?

您可以使用django中的include()方法轻松完成此操作。

1 个答案:

答案 0 :(得分:2)

按照您的惯例在app.js文件中创建Express应用。然后,在blog.js文件中执行相同操作。在app.js内导入并使用它,如下所示:

var blog = require('./blog');

var app = express();
app.use(blog);

blog.js文件中,您需要做的就是导出您的应用:

var app = express();
app.get('/blog/...', ...);

module.exports = app;

换句话说:任何Express应用程序都可以用作任何其他Express应用程序的中间件,因此您可以创建子应用程序。

希望这有帮助。

PS:TJ Holowaychuk(Express的创建者)在此创建了一个视频,Modular web applications with Node.js and Express