一共存在四个文件: 1. index.js 入口文件, 采用exports 模块化开发 代码:html
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 各个路由下面的逻辑:post
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;