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

优点

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));
    }
})

下载地址

Fork me on GitHub