在快速应用程序内部制作多个应用程序
我来自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)
我想要做的是委托一切关于/blog
由blog.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。