一共存在四个文件: 1. index.js 入口文件, 采用exports 模块化开发 代码:
var server = require('./server');
var router = require('./router');
var routerplay = require('./routerplay');
var ccd = {};
ccd['/'] = router.index;
ccd['/index'] = router.index;
ccd['/file'] = router.file;
server.start(ccd, routerplay.routerplay);
2 .server.js 用来引入http启动服务 :
var http = require("http");
var url = require("url");
var qs = require('querystring');
var start = function (ccd, routerplay) {
http.createServer(function (request, response) {
var lu = url.parse(request.url).pathname;
var query = url.parse(request.url, true).query;
console.log(typeof query);
if(query.id){
routerplay(ccd, lu, request, response,query);
}else{
routerplay(ccd, lu, request, response,qs);
}
}).listen(8888);
console.log("服务器已启动,监听8888端口");
}
exports.start = start;
3. routerPlay.js 做分别路由使用 如果不具备这个路由 发送404:
function routerplay(ccd, pathname, request, response,query) {
if(typeof ccd[pathname] === 'function'){
return ccd[pathname](request, response,query);
}else{
console.log("没有找到网页" + pathname);
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not found");
response.end();
}
}
exports.routerplay = routerplay;
4. router.js 各个路由下面的逻辑:
var fs = require('fs');
var url = require('url');
function index(request, response, query) {
response.writeHead(200, {
"Content-Type": "text/html",
"Access-Control-Allow-Origin": "http://localhost",
"Access-Control-Allow-Methods": "GET",
"Access-Control-Allow-Headers": "x-requested-with,content-type"
});
if (query.id) {
var url = './file/' + query.id + '.txt';
fs.exists(url, function(ss) {
if (ss) {
fs.readFile(url, 'utf8', function(error, data) {
response.write(data);
response.end();
});
} else {
new Error(0, "没有找到文件");
}
})
} else {
response.write('参数错误请验证');
response.end();
}
console.log('已响应/' + query.id);
}
function file(request, response, query) {
var postData = '';
request.addListener('data', function(postDataChunk) {
postData += postDataChunk;
});
request.addListener('end', function() {
console.log('数据接收完成');
if (postData) {
var params = query.parse(postData);
if (!params.name) {
params = JSON.parse(postData);
}
if (params && params.name && params.data) {
console.log('开始存储');
var url = './file/' + params.name + '.txt';
fs.writeFile(url, params.data, function(err, data) {
if (err) {
console.log(err);
response.writeHead(501, {
"Content-Type": "text/html",
"Access-Control-Allow-Origin": "http://localhost",
"Access-Control-Allow-Methods": "GET",
"Access-Control-Allow-Headers": "x-requested-with,content-type"
});
response.write('服务器错误');
response.end();
return;
}
response.writeHead(200, {
"Content-Type": "text/html"
});
response.write('success');
response.end();
})
} else {
response.writeHead(500, {
"Content-Type": "text/html",
"Access-Control-Allow-Origin": "http://localhost",
"Access-Control-Allow-Methods": "GET",
"Access-Control-Allow-Headers": "x-requested-with,content-type"
});
response.write("数据解析错误, 请确认");
response.end();
}
} else {
console.log('没有数据')
response.writeHead(200, {
"Content-Type": "text/html",
"Access-Control-Allow-Origin": "http://localhost",
"Access-Control-Allow-Methods": "GET",
"Access-Control-Allow-Headers": "x-requested-with,content-type"
});
response.write("没有数据请确认!");
response.end();
}
});
}
exports.index = index;
exports.file = file;