2013-08-18 72 views
2

我來自django背景,基本上,框架允許使用很多模塊化代碼。我在nodejs和express中創建了一個簡單的博客引擎。然而,所有的路線最終都在我的主要app.js文件中,或者更確切地說是app.coffee,因爲我使用了coffeescript用於符合JavaScript的我的nodejs應用程序。在快速應用程序內部製作幾個應用程序

因此,說這是我的路線怎麼看:現在

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()方法來做到這一點。

回答

2

按照您的習慣,在您的app.js文件中創建快速應用程序。然後,在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應用程序的中間件,因此您可以創建子應用程序。

希望這會有所幫助。

PS:TJ Holowaychuk(Express的創造者)在此創建了一個視頻,Modular web applications with Node.js and Express

相關問題