一共存在四個文件: 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;