Node.js模块 router-plan
发布于 6 年前 作者 37372842 2324 次浏览 来自 分享

另外一种方式去实现路由,管理项目更加方便。

优点

1.理更加清晰,一个类型的路由就是一个文件。

2.所有的请求都经过一个公用的方法,处理方便。

3.接口只有一个,不同的请求只有传入的参数不同。

使用

npm install router-plan

文件目录如下:

- router-list           ---存放路由的文件夹
      - A               ---路由文件夹
            - a.js      ---具体的路由文件    
            - index.js  ---暴露当前路径下的所有的路由文件的方法
      - index.js        ---暴露当前路径下的所有的路由文件
- server.js

server.js文件格式如下,创建服务器成功之后,只需要调用routerPlan()这个方法并传入传入对应参数,其他的自动帮你实现。

const http = require('http');
const routerPlan = require('router-plan');
http.createServer((req,res) => {
    routerPlan(req, res, {
        routerList:require('./router-list'),    //路由文件地址
        crossDomain:true                        //是否允许跨域
    });
}).listen(80,() => {
    console.log('server start ok!');
});

router-list文件夹下面的index.js,主要用于暴露router-list文件夹里面的文件,用来生成json对象。

const fileList = ['a','b','c'];//router-list下面所有的文件夹名字

fileList.forEach((fileName) => {
    module.exports[fileName] = require(`./${fileName}`);
});

A文件夹下面的index.js,主要用来暴露A文件夹里面所有的文件,用来生成json对象

const fileList = ['a','b','c'];//A下面所有的文件夹名字

fileList.forEach((fileName) => {
    module.exports[fileName] = require(`./${fileName}`);
});

a.js文件格式如下:路由文件写法,把方法都暴露给对应的上层对象,通过exports.functionName(方法名字)来写接口。

exports.a1 = function (query,req,res) {
      res.end('this is fileName:c,fn:a1');
};

exports.a2 = function (query,req,res) {
    res.end('this is fileName:c,fn:a2');
};

客户端请求参数如下:

eg:请求A文件夹a里面的a1方法

$.ajax({
    url: 'http://localhost',
    type:'post',
    data: {
        folderName: "A",     //router-list文件夹下面的文件夹名字
        fileName: "a",       //A文件夹下面的文件名字
        fn: "a1"             //a文件里面的方法名字
    },
    success: function (data) {
        console.log(JSON.parse(data));
    }
})

gitee地址:https://gitee.com/meetqy/router-plan/

github地址:https://github.com/meetqy/router-plan/

回到顶部