Node.js模块 router-plan
另外一种方式去实现路由,管理项目更加方便。
优点
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));
}
})