网上大部分看到的express中app.js里面路由控制器有app.get()和app.post()两种
最简单的路由控制器写法就是直接在app.js中直接写出路由设置的回调函数。例如:
app.get('/', function(req, res){
res.render('index');
});
这种就是直接在回调函数里面写页面渲染的代码。但是随着代码越来越多,会导致app.js的内容太多而且冗杂,难以维护,这样就违背了代码模块化的思想。所以目前最实用的就是把app.js作为一个简单的路由分配器(路由控制器只负责分配路由,然后到对应的文件中找到对应的路由方法,实现路由功能)。
在使用express 4.x框架时,我发现它的做法和我的做法有点不一样,但是效果都是一样的。具体的就是以下两种方法:
一、使用app.get()方法(我自己的做法)
1、在app.js中声明一个本地文件模块
var routes = require('./routes/index')
加入routes文件夹下面的index.js文件,然后把我们的路由方法写到该文件中,实现分离。
2、路由控制器的写法:
app.get('/', routes.index);
这里就把app.get的回调函数通过方法的调用分离到了对应的方法中,而不是以下全写在app.js中
3、然后就是routes/index.js文件中的代码:
router.index = function(req, res){
res.render('index', {title:'Express'});
}
这里使用js面向对象的写法就行了。需要注意的是这里方法的前面是用得router。而我看有些express 3.x的写法是写的exports,但是我这里用exports却又不行,具体的我也没有刻意去了解,对于我这样的实用主义者来说,能用就行,何必深究,毕竟还没到研究的地步。
以上就是我的路由控制器的写法。
然后下面给大家看看express 4.x原创的写法。
二、express 4.x路由控制器的写法
1、在app.js中声明一个本地文件模块(这一点和我的是一样的)
var routes = require('./routes/index')
加入routes文件夹下面的index.js文件,然后把我们的路由方法写到该文件中,实现分离。
2、路由控制器的写法(与我不同了)
app.use('/', routes);
通过中间件来设置路由。
3、routes文件夹下面的index.js中的写法
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
他是在这里写的一个路由控制器,而且也是可行的。
至于哪种方法更好我暂时还不知道,只是把这两种发放给大家介绍介绍。
如果哪里写的有误或者不好希望大家支出,毕竟我也不是什么大牛,还在不断进步中。