1 /** 2 * node入門之綜合案例(一):簡易路由 3 * @Author : by Ghost 4 * @Date : 2016/07/11 5 * @Description : 6 * 一、引入如下模塊 7 * http模塊:建立服務器,處理請求和相應 8 * URL模塊:解析url請求地址 9 * fs模塊:讀取文件 10 * path模塊:處理文件路徑,獲取文件後綴名,路徑優化 11 * 12 * 二、使用http.createServer()方法建立服務器 13 * 三、使用url.parse()方法解析瀏覽器請求路徑 14 * 四、使用fs.readFile()方法讀取對應的靜態文件 15 * 五、使用path.extname()方法獲取文件後綴名 16 * 六、設置MIME類型,實現文件兼容 17 * */ 18 19 //引入模塊 20 var http = require('http'); 21 var url = require('url'); 22 var fs = require('fs'); 23 var path = require('path'); 24 25 //建立服務器,監聽3000端口 26 var server = http.createServer(function (req, res) { 27 //屏蔽/favicon.ico的請求 28 if(req.url === '/favicon.ico') 29 { 30 return ; 31 }; 32 33 //解析請求路徑 34 var pathname = url.parse(req.url).pathname; 35 36 //默認首頁 37 if(pathname.indexOf('.') === -1) 38 { 39 pathname = "/index.html" 40 }; 41 42 //獲取文件後綴名 43 var extname = path.extname(pathname); 44 45 //讀取文件 46 fs.readFile('./static/' + pathname, function (err,data) { 47 //若是出錯則表示請求路徑不正確,顯示404 48 if(err){ 49 fs.readFile("./static/404.html",function(err,data){ 50 res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"}); 51 res.end(data); 52 }); 53 return; 54 }; 55 56 //讀取數據 57 //結束響應 58 getMime(extname,function(mime){ 59 res.writeHead(200,{"Content-Type": mime}); 60 res.end(data); 61 }); 62 }); 63 }); 64 65 //設置監聽端口 66 server.listen(3000,'127.0.0.1', function () { 67 console.log("server is started listen port 3000"); 68 }); 69 70 //getMIME() 71 function getMime(extname,callback) 72 { 73 fs.readFile('./static/mime.json', function (err,data) { 74 if(err) 75 { 76 throw Error("找不到mime.json文件"); 77 return; 78 }; 79 var mimeJson = JSON.parse(data); 80 var mime = mimeJson[extname] || "text/plain"; 81 //執行回調函數,結束異步問題 82 callback(mime); 83 }); 84 }