在一个web项目里,路由是关键的一部分,而路由分离则是项目模块化思想的一个实现,可以增强代码的可读性。在expressJS中,实现路由分离的方法不止一种,下面就做个总结:
1.路由的接口
在express中路由的接口为app.use(路径, 回调函数),use可根据请求类型更改为get、post、delete等函数。
2.分离的实现
express中的路由分离则是将接口中的回调函数集中分成一个模块。express4.x提供了router类作为路由模块对象。
var route = express.Router();
对router对象,提供了router.use(路径,回调函数)的接口。
在项目文件夹中创建routes文件夹,在routes文件夹中创建index.js文件作为主页路由接口模块
routes/index.js
1 var express = require('express'); 2 var router = express.Router(); 3 4 //路由定义 5 router.get('/', function(req, res) { 6 res.render('index', {titile: 'express'}); 7 }; 8 9 //模块导出 10 module.exports = router;
在服务器主程序app.js中:
1 var index = require(./routes/index'); 2 3 app.use('/', routes);
注意,在route模块内的路径是想对于app.js中调用该模块接口中的路径参数而言的,如:
在/routes/article.js中:
router.get('all',function(req, res) {
res.render('articleList', {article: articles});
};
module.exports = router;
app.js中调用:
var article = require('./routes/article');
app.use('article', article);
则只有当路径为'article/all'时,才会触发该路由渲染articleList页面。
3.旧的分离实现
在express4.x版本前,分离实现也有多种方法:
1) 在routes/index.js中:
1 module.exports.index = function(res, req) { 2 //路由处理代码 3 };
在app.js中的调用则与之前描述的相同。
2)在routes/index.js中:
1 module.exports.index = function(app) { 2 app.get('/', fucntion() { 3 //路由处理代码 4 }); 5 //....其它路由规则 6 };
在app.js中:
1 var routes = require('./routes'); 2 3 routes.index(app);
或者:
var routes = require('./routes'); app.use(express.router(routes.index));
浙公网安备 33010602011771号