2014-01-20 210 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