2014-01-20 39 views
0

我生成了快速應用程序。我有一個索引頁面,我想添加訂閱表單來收集保存索引頁面的電子郵件。如何處理Express.js路由?

所以我增加了一個功能,./routes/index.js:

exports.index = function(req, res){ 
    res.render('index', { title: 'Express' }); 
}; 

exports.subscribe = function(req, res){ 
    res.send('Subscribed'); 
}; 

這裏的app.js:

var routes = require('./routes'); 
//Some code here 
app.post('/subscribe', routes.subscribe); 

那是一個很好的方式來組織代碼?我的意思是,我應該在哪裏放置路由處理程序?

+0

是的,這是一個好方法。我通常爲每個「控制器」保留一個路由文件,例如,如果做博客網站:userRoutes.js用戶功能,blogRoutes.js博客條目功能,adminRoutes.js管理功能。 –

回答

1

你可以做一些事情像

app.use(app.router); 
var routes = require('./routes')(app); 

,然後創建route.js,這可能看起來像

var index = require('./routes/index'); 
var users = require('./routes/users'); 
module.exports = function(app){ 
app.get('/',index.index); 
app.get('/homePage',users.homePage); 
}; 

現在你可以看到我創建了一個文件夾路徑來管理我所有的路線如索引和用戶。所以你可以看看index.js

exports.index = function(req, res){ 
    res.render('index', { title: 'Express' }); 
}; 

我的意思是這是最簡單的,你可以根據你的要求得到或張貼。這是你在任何地方都可以看到的標準。

+0

當我調用var routes = require('./ routes')它是否加載./routes文件夾中的所有函數定義? –

+0

不,你必須做這樣的事情,** var routes = require('./ routes')(app); **然後它會將所需的對象傳遞給其他路由,只是在我做出的最後一條評論中做了一個小修改。 'var index = require('./ routes/index'); var user = require('./ routes/user'); var bootstrap = require('./ routes/bootstrap'); module.exports = function(app){ \t app.get('/',index.index); \t app.get('/ cookiePage',bootstrap.cookiePage); \t app.get('/ counter',bootstrap.counter); app.get('/ msession',bootstrap.msession); }; ' – NarendraSoni