文件夹格式如下:
app.js
var http = require("http");
var url = require("url");
var fs = require("fs");
var path = require("path");
var routesObj = {};
function geFileList(path) {
var filesList = [];
readFile(path, filesList);
return filesList;
}
//遍历读取文件
function readFile(path, filesList) {
var files = fs.readdirSync(path);//需要用到同步读取
files.forEach(walk);
function walk(file) {
var states = fs.statSync(path + '/' + file);
if (states.isDirectory()) {
readFile(path + '/' + file, filesList);
}
else {
//创建一个对象保存信息
var obj = new Object();
obj.size = states.size;//文件大小,以字节为单位
obj.name = file;//文件名
obj.path = path + '/' + file; //文件绝对路径
filesList.push(obj);
}
}
}
var getFileName = function (fileName) {
var pathList = fileName.split(".");
var fileName = pathList[0];
return fileName;
};
function getRoutes(dir) {
var fileList = geFileList(dir);
if (fileList.length) {
for (var i = 0; i < fileList.length; i++) {
var item = fileList[i];
var route = require(item.path);
var routeName = "/" + getFileName(item.name);
routesObj[routeName] = route;
}
}
}
var server = http.createServer(function (req, res) {
var pathName = url.parse(req.url).pathname;
var query = url.parse(req.url).query;
var method = req.method.toLowerCase();
res.writeHead(200, {"Content-Type": "text/plain"});
processRoutes(method, pathName, query, req, res);
}).listen(8080);
getRoutes(path.join(__dirname, "./routes"));
function processRoutes(method, pathName, query, req, res) {
var param = {};
if (query) {
if (query.indexOf("&") != -1) {
var paramArr = query.split("&");
for (var i = 0; i < paramArr.length; i++) {
var item = paramArr[i];
var arr = item.split("=");
var key = arr[0];
var val = arr[1];
param[key] = val;
}
} else {
if (query.indexOf("=") != -1) {
param[query.split("=")[0]] = query.split("=")[1];
}
}
}
if (routesObj[pathName]) {
if (method == "get") {
req.query = param;
routesObj[pathName].get(req, res);
} else {
req.body = param;
routesObj[pathName].post(req, res);
}
} else {
res.write("unKnow routes");
res.end();
}
}
hello.js
/**
* Created by Administrator on 2016/4/25.
*/
var process = module.exports = {};
process.get = function (req, res) {
console.log("hello get called");
res.write("hello get called " + req.query.name + req.query.age);
res.end();
};
process.post = function (req, res) {
};