关于expressJS的路由分离实现问题

Posted on 2015-08-31 10:17  William-D-King  阅读(1460)  评论(0)    收藏  举报

在一个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));

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3