在快速应用程序内部制作多个应用程序

我来自Django的背景,基本上,框架允许大量的模块化代码。 我已经在nodejs和express中创build了一个简单的博客引擎。 然而,所有的路线最终都在我的主要app.js文件,或者更确切地说app.coffee ,因为我用我的nodejs应用程序,遵守JavaScript的coffeescript。

所以,这就是我的路线:

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

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

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

如果我想按时间添加sorting,例如:

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

我想要做的是委托一切关于/blogblog.js处理例如。 理想情况下,如何从主要app.js文件中获取所有这些路线?

你可以通过在django中使用include()方法来实现。

按照习惯,在app.js文件中创build一个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应用程序的中间件,因此您可以创build子应用程序。

希望这可以帮助。

PS:TJ Holowaychuk(Express的创build者)在这个带有Node.js和Express的模块化Web应用程序上创build了一个video。